我正在尝试为我的对象的属性显式设置configurable: false
,并期望这不应该允许从我的对象中删除该属性,但是有些它似乎不起作用,因为我的属性仍然存在被删除。这有什么不对?
我在做什么
var emp = {
name: 'Rojer',
}
Object.defineProperty(emp, 'id', {
configurable : false,
value : 5100
});
delete emp.id;
for (p in emp) {
document.write('<br/>' + emp[p]);
}
结果
现在它只是name
属性的打印值。
我期待
虽然它应该通过忽略id
语句打印name
和delete emp.id;
。
答案 0 :(得分:3)
问题不在于configurable
属性:问题是您需要将enumerable
设置为true:
Object.defineProperty(emp, 'id', {
configurable : false,
enumerable : true,
value : 5100
});
enumerable
默认为false,这意味着新变量(id
)不会出现在for / in循环中,这就是您无法看到它的原因。< / p>