javascript属性删除

时间:2011-05-20 13:51:57

标签: javascript

只是想知道这个:

区别之间,或者之间存在差异:

delete obj.someProperty

obj.someProperty=undefined

4 个答案:

答案 0 :(得分:5)

第二个版本将属性设置为现有值undefined,而第一个版本从对象中删除键。迭代对象或使用in关键字时,可以看到差异。

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

答案 1 :(得分:3)

迭代对象时将实现差异。删除属性时,它不会包含在循环中,而只是将值更改为undefined将包含它。对象的长度或迭代次数将不同。

以下是有关JavaScript中删除的一些很好的(尽管是高级的)信息:

http://perfectionkills.com/understanding-delete/

答案 2 :(得分:2)

使用delete实际上会从对象中删除密钥本身。如果将值设置为undefined,则它们仍然存在,但该值是唯一已更改的值。

答案 3 :(得分:2)

前者实际上会删除该属性,后者会将其保留,但会将其设置为undefined

如果您遍历所有属性(for (props in obj) { })或测试是否存在一个(if ('someProperty' in obj) {}

,这就变得很重要