标签:obj && get log 思考 defineProperty console true name
<script>
var x = 0
Object.defineProperty(this, 'a', {
get() {
x++
console.log('get');
return x
}
})
console.log(a === 1 && a === 2 && a === 3);
var obj = {
}
Object.defineProperty(obj, 'name', {
get() {
console.log('get');
}
})
name //无打印
obj.name //打印 'get'
//结论:Object.defineProperty(obj, 'name')会创建name属性加入到obj,并且监听obj.name;并不能监听name
var obj = {
name: 1
}
console.log(obj.name); //1
Object.defineProperty(obj, 'name', {
get() {
console.log('get'); //'get'
}
})
console.log(obj.name); //undefined
//打印依次为1,'get',undefined 最后一行代码'console.log(obj.name)'读取obj.name被get劫持并且get无返回值,因此undefined
var obj = {
name: 1
}
console.log(obj.name); //1
Object.defineProperty(obj, 'name', {
get() {
console.log('get'); //'get'
return 10
}
})
console.log(obj.name); //10 最后一行代码'console.log(obj.name)'读取obj.name被get劫持并且get返回值为10替代了obj.name
</script>
标签:obj,&&,get,log,思考,defineProperty,console,true,name 来源: https://www.cnblogs.com/xjt31/p/13992918.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。