设置可配置:false无效



我试图显式设置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属性的值。

我期待

忽略delete emp.id;语句,同时打印idname

问题不在于configurable属性:问题在于您需要将enumerable设置为true:

Object.defineProperty(emp, 'id', {
    configurable : false,
    enumerable : true,
    value : 5100
});

enumerable默认为false,这意味着新变量(id)不会出现在for/in循环中,这就是为什么您没有看到它。

最新更新