设置可配置:false不起作用

时间:2014-03-11 12:58:35

标签: javascript

我正在尝试为我的对象的属性显式设置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语句打印namedelete emp.id;

1 个答案:

答案 0 :(得分:3)

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

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

enumerable默认为false,这意味着新变量(id)不会出现在for / in循环中,这就是您无法看到它的原因。< / p>