假设我有一个对象,其中包含另一个对象作为其属性,例如
var obj = {
'1': {...},
'42': {...}
};
When obj
超出范围 - 所有嵌套对象是否都隐式销毁,或者我需要迭代它们并且delete
明确地?
是的,除非另一个参考仍然存在:
var obj = {
'1': {...},
'42': {...}
};
var save = obj['1'];
obj = null;
在垃圾回收之后,假设没有创建其他引用,那么 obj 和 obj['42'] 的空间将被回收,saved 的值当然会被保留。
Mea culpa :正如评论中提到的delete obj
在我的原件中无效,因为obj
被宣布为var
. Had obj
是全局的,因此是全局对象的属性,delete
会工作得很好。要有效删除汽车,请使用obj = null
。
我在测试中学到的一件事是delete
一个运算符并返回true
or false
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)