2

在 Javascript 中,我的理解是,当页面上不存在对它们的引用时,它们会被垃圾收集。

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

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

4

1 回答 1

4

可以收集作为“obj”值的对象,但它与作为“arr”值的对象(数组)不同。那个不会收的。

一个对象可以独立于其属性所引用的对象进行收集。

(严格来说,这一切都取决于收集器的详细信息,但由于属性值不是包含对象的一部分,如果知道有一个收集器会这样做,我会感到非常惊讶。)

于 2013-02-12T20:21:11.583 回答