由(a === 1 && a === 2 && a === 3) === true 引發的一系列思考
阿新 • • 發佈:2020-11-17
<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>