当前位置:  开发笔记 > 编程语言 > 正文

Javascript中循环引用的示例?

如何解决《Javascript中循环引用的示例?》经验,为你挑选了4个好方法。

我想知道是否有人在javascript中有一个好的,有效的循环引用示例?我知道这对于闭合来说非常容易,但是很难将我的大脑包裹起来.我可以在Firebug中剖析一个例子,我将不胜感激.

谢谢



1> sth..:

创建循环引用的一种简单方法是在属性中引用自身的对象:

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现在超出​​范围,它仍然从函数范围引用.简单的垃圾收集器将无法识别此循环,也不会收集该函数.



2> Alan Kis..:

甚至更简单,一个"包含"自身的数组.见例子:

var arr = [];
arr[0] = arr;



3> Josh Stodola..:
window.onload = function() {
  hookup(document.getElementById('menu'));

  function hookup(elem) {
    elem.attachEvent( "onmouseover", mouse);

    function mouse() {
    }
  }
}

如您所见,处理程序嵌套在attacher中,这意味着它在调用者的范围内是封闭的.



4> cychoi..:

可能是定义循环对象的最短方法.

a = {}; a.a = a;

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有