javascript属性删除
我只是想知道这个: 以下两者之间有什么区别,或者说有什么区别:javascript属性删除,javascript,Javascript,我只是想知道这个: 以下两者之间有什么区别,或者说有什么区别: delete obj.someProperty 及 当在对象上迭代时,将实现差异。删除属性时,它不会包含在循环中,而仅将值更改为“未定义”将包含它。对象的长度或迭代次数将不同 下面是一些关于在JavaScript中删除的重要信息(尽管是高级的): 使用delete实际上会从对象中删除密钥本身。如果将值设置为未定义,则键仍然存在,但该值是唯一已更改的内容。第二个版本将属性设置为现有值未定义,而第一个版本从对象中移除键。在对象上迭代或
delete obj.someProperty
及
当在对象上迭代时,将实现差异。删除属性时,它不会包含在循环中,而仅将值更改为“未定义”将包含它。对象的长度或迭代次数将不同 下面是一些关于在JavaScript中删除的重要信息(尽管是高级的):
使用
delete
实际上会从对象中删除密钥本身。如果将值设置为未定义
,则键仍然存在,但该值是唯一已更改的内容。第二个版本将属性设置为现有值未定义
,而第一个版本从对象中移除键。在对象上迭代或在关键字中使用时可以看到差异
var obj = {prop: 1};
'prop' in obj; // true
obj.prop = undefined;
'prop' in obj; // true, it's there with the value of undefined
delete obj.prop;
'prop' in obj; // false
前者将实际删除该属性,后者将保留该属性,但将其设置为未定义
如果您循环所有属性(for(obj中的道具){}
)或测试其中一个属性的存在(if('someProperty'in obj){}
)感谢链接,这是我完全低估的:)
var obj = {prop: 1};
'prop' in obj; // true
obj.prop = undefined;
'prop' in obj; // true, it's there with the value of undefined
delete obj.prop;
'prop' in obj; // false