3
>>> var par = {a: 1, b: 2};
undefined
>>> var ch = Object.create(par);
undefined
>>> delete ch.a
true
>>> ch
Object { a=1, b=2}
4

1 回答 1

4

您误解了 delete 返回的内容:

如果属性是自己的不可配置属性,则以严格模式抛出(在非严格模式下返回 false)。在所有其他情况下返回 true。( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete )

delete ch.a试图在 中定位该属性ach失败(因为ch没有这样的自己的属性),什么也不做,并且愉快地返回true。如果你写了delete ch.foobar,结果是一样的。但是,如果您尝试了不可配置的属性(例如delete ch.__proto__),结果将是false.

于 2013-09-07T17:59:49.960 回答