假设我有一个包含另一个对象作为其属性的对象
var obj = {
'1': {...},
'42': {...}
};
当 obj
超出范围时 - 是隐式销毁所有嵌套对象还是我需要遍历它们并显式删除
?
最佳答案
是的,除非另一个引用仍然存在:
var obj = {
'1': {...},
'42': {...}
};
var save = obj['1'];
obj = null;
在垃圾收集之后,假设没有创建其他引用,那么 obj 和 obj['42'] 的空间将被回收,saved 的值当然会被保留。
Mea culpa :正如评论中提到的那样,我原来的 delete obj
是无效的,因为 obj
被声明为 var
。如果 obj
是一个全局对象,因此是全局对象的一个属性,delete
就可以正常工作。要有效地删除 var,请使用 obj = null
。
我通过测试了解到的一件事是 delete
运算符并返回 true
或 false
。
关于javascript - 垃圾回收 : object properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610964/