>>> var par = {a: 1, b: 2};
undefined
>>> var ch = Object.create(par);
undefined
>>> delete ch.a
true
>>> ch
Object { a=1, b=2}
答案 0 :(得分:3)
你误解了删除的内容:
如果属性是自己的不可配置属性,则以严格模式抛出(在非严格中返回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
。