在Javascript中,我理解当页面上没有对它们的引用时,项目是垃圾收集。
var obj = {
arr: [1,2,3]
};
var arr = obj.arr;
obj = "hello";
在上面的代码中,我已经替换了对初始obj对象的引用。我不再有任何对该对象的引用。但是,我确实引用了该对象上的数组。对象是否保持不变直到arr未被引用?或者它可以被垃圾收集?
答案 0 :(得分:4)
可以收集作为“obj”值的对象,但它是一个单独的对象,而不是对象(数组)的值是“arr”。那个不会被收集。
可以独立于其属性引用的对象收集对象。
(严格来说,这一切都取决于收集器的细节,但由于属性值不是包含对象的一部分,我会非常惊讶地了解到会有这样做的收集器。)