>>> var par = {a: 1, b: 2};
undefined
>>> var ch = Object.create(par);
undefined
>>> delete ch.a
true
>>> ch
Object { a=1, b=2}
问问题
1690 次
1 回答
4
您误解了 delete 返回的内容:
如果属性是自己的不可配置属性,则以严格模式抛出(在非严格模式下返回 false)。在所有其他情况下返回 true。( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete )
delete ch.a
试图在 中定位该属性a
,ch
失败(因为ch
没有这样的自己的属性),什么也不做,并且愉快地返回true
。如果你写了delete ch.foobar
,结果是一样的。但是,如果您尝试了不可配置的属性(例如delete ch.__proto__
),结果将是false
.
于 2013-09-07T17:59:49.960 回答