【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, 表示该属性不可删除,删改无效,也不可再次修改其属性,但是属性值可以重写