垃圾收集:对象属性

时间:2012-05-16 01:44:38

标签: javascript

假设我有一个对象包含其他对象作为其属性,如

var obj = {
    '1': {...},
    '42': {...}
};

obj超出范围时 - 是否隐式销毁所有嵌套对象,或者我需要明确地迭代它们并delete

1 个答案:

答案 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运算符并返回truefalse