【JS错题总结】对象属性相关

下面代码的输出结果:

var obj = {
    brand: 'apple',
    price: 5999
}
Object.defineProperty(obj, 'id', {value: 1})
Object.defineProperty(obj, 'price', {configurable: false})

console.log(Object.keys(obj).length);// 2

// apple  5999
for(var k in obj) {
    console.log(obj[k])
}

obj.price = 4999
delete obj['price']
console.log(obj) // { brand: 'apple', price: 4999 }

 

Object.keys(obj) 返回 obj 对象中自身可枚举属性组成的数组,虽然 obj 对象新增了 id 属性,但该属性是不可枚举的,所以 Object.keys(obj).length 为 2

for...in... 循环可以遍历对象可枚举的属性,id 属性由于不可枚举,因此仍然不会被遍历到

price 属性设置了 configurable: false, 表示该属性不可删除,删改无效,也不可再次修改其属性,但是属性值可以重写

 

posted @ 2023-06-14 22:13  zjy4fun  阅读(9)  评论(0编辑  收藏  举报