如果对某个成员的引用仍然存在,是否可以对对象进行垃圾回收?

时间:2013-02-12 20:18:55

标签: javascript garbage-collection

在Javascript中,我理解当页面上没有对它们的引用时,项目是垃圾收集。

var obj = {
   arr: [1,2,3]
};
var arr = obj.arr;
obj = "hello";

在上面的代码中,我已经替换了对初始obj对象的引用。我不再有任何对该对象的引用。但是,我确实引用了该对象上的数组。对象是否保持不变直到arr未被引用?或者它可以被垃圾收集?

1 个答案:

答案 0 :(得分:4)

可以收集作为“obj”值的对象,但它是一个单独的对象,而不是对象(数组)的值是“arr”。那个不会被收集。

可以独立于其属性引用的对象收集对象。

(严格来说,这一切都取决于收集器的细节,但由于属性值不是包含对象的一部分,我会非常惊讶地了解到会有这样做的收集器。)