假设我有一个对象包含其他对象作为其属性,如
var obj = {
'1': {...},
'42': {...}
};
当obj
超出范围时 - 是否隐式销毁所有嵌套对象,或者我需要明确地迭代它们并delete
?
答案 0 :(得分:3)
是的,除非另一个参考文献仍然存在:
var obj = {
'1': {...},
'42': {...}
};
var save = obj['1'];
obj = null;
在垃圾收集之后并且假设没有创建其他引用,那么obj和obj ['42']的空间将被恢复,保存的值当然会被保留。
Mea culpa:由于delete obj
被声明为obj
,我原文中的评论var
中提及的内容无效。如果obj
是一个全局对象,那么delete
就可以正常工作了。要有效删除var,请使用obj = null
。
我学习测试的一件事是delete
运算符并返回true
或false
。