object1作为object2的属性,而object2又是object1的属性 - 会导致内存泄漏吗?

时间:2014-10-02 12:52:14

标签: javascript reference module

将"形成"和#34; form.errorProcessor"只保持对彼此的单个引用,并且在内存中只有2个对象,或者这是泄漏/问题情况吗?

var ErrorProcessor = function(form){
    this.form = form; // Problem Line
}
var form = $("form");
form.errorProcessor = new ErrorProcessor(form); // Some element assignment

发布问题行,我有一个对象层次结构,如下所示[由console.log(form)]

检查

form:{errorProcessor:{form:{errorProcessor:{form:{errorProcessor:{...}}}}}}

1 个答案:

答案 0 :(得分:2)

不,循环引用没有内存泄漏,并且您在代码中只创建了两个对象。任何体面的垃圾收集器都可以处理它们。

唯一的问题是当你递归检查你的对象时(就像你在控制台中扩展它的属性一样),你走下了一个无底洞 - 如果以编程方式完成,你会得到一个无限循环或堆栈溢出递归。但是,您在控制台中看到的所有这些结构都代表同一个对象。