Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript属性删除_Javascript - Fatal编程技术网

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