javascript属性删除

javascript property deletion

本文关键字:删除 属性 javascript      更新时间:2023-09-26

只是想知道这个:

之间有什么区别,或者根本没有区别

delete obj.someProperty

obj.someProperty=undefined

第二个版本将属性设置为现有值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

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

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

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

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

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

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