我想知道是否有人在 javascript 中有一个很好的、有效的循环引用示例?我知道这对于闭包来说非常容易,但我很难全神贯注于此。非常感谢我可以在 Firebug 中剖析的示例。
谢谢
最佳答案
创建循环引用的一种简单方法是让一个对象在属性中引用自身:
function Foo() {
this.abc = "Hello";
this.circular = this;
}
var foo = new Foo();
alert(foo.circular.circular.circular.circular.circular.abc);
此处 foo
对象包含对自身的引用。
对于闭包,这通常更隐含,只是在范围内有循环引用,而不是作为某个对象的显式属性:
var circular;
circular = function(arg) {
if (arg) {
alert(arg);
}
else {
// refers to the |circular| variable, and by that to itself.
circular("No argument");
}
}
circular("hello");
circular();
这里保存在 circular
中的函数引用了 circular
变量,因此也引用了它自身。它隐含地持有对自身的引用,创建一个循环引用。即使 circular
现在超出范围,它仍然从函数范围中引用。简单的垃圾收集器不会识别此循环,也不会收集该函数。
关于javascript - Javascript 中的循环引用示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493453/