为什么删除运算符返回 true,即使属性未从对象中删除
Why delete operator returns true even if property wasn't deleted from an object
>>> var par = {a: 1, b: 2};
undefined
>>> var ch = Object.create(par);
undefined
>>> delete ch.a
true
>>> ch
Object { a=1, b=2}
你误解了删除返回的内容:
如果属性是自己的不可配置属性,则在严格模式下引发(在非严格模式下返回 false)。在所有其他情况下返回 true。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)
delete ch.a
尝试在ch
中找到a
的属性,失败(因为ch
没有这样的自己的属性),什么也不做,很高兴地返回true
。如果你写delete ch.foobar
,结果将是相同的。但是,如果您尝试了不可配置的属性(例如 delete ch.__proto__
),结果将是 false
。
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- 如何从对象中删除属性
- 使用jQuery添加和删除属性
- 为什么没有从数组中存在的对象中删除属性
- 删除属性后刷新DOM,而不象chrome那样刷新页面
- Jquery 在当前之前从元素中删除属性
- 在窗口调整大小时删除属性
- 如何从使用 jquery 添加的项中删除属性
- 从 JavaScript 中的 XAML 元素中删除属性
- 主干模型.未设置不删除属性
- 无法在单击时添加/删除属性
- 从主干.js模型中删除属性
- 如果选中复选框,请删除属性
- jQuery单击功能可从元素中删除属性并在单独单击时恢复属性
- 如果找到特定类,如何添加和删除属性
- 如何使用 Javascript 从 DOM 元素中删除属性
- 从 Javascript 对象中删除属性
- 量角器未知错误,从 DOM 中删除属性
- 如何使用jquery onchange事件在HTML中添加和删除属性
- 如何从任何级别的嵌套javascript对象中删除属性