如果你可以向我解释为什么shout()不断被调用,我会很高兴,尽管它应该“消失”。
var myclass = new Class({
myid: "greatidea",
initialize: function(element) {
var shout = function() { alert(this.myid); };
shout.periodical(5000, this); // test debug
}
});
x = new myclass ();
alert(x);
x=null;
alert(x);
另见http://mootools.net/shell/jhCBz/
基本上,我明白了这个想法:函数有自己的注册,现在独立于调用它的对象。但我很乐意得到真正的解释 感谢。
答案 0 :(得分:6)
功能始终独立。只要有对函数的引用,它就会继续存在。在这种情况下,您的对象也是如此,因为您已经将对它的引用(通过this
)传递给periodical()
函数,该函数保留了它用于上下文。
答案 1 :(得分:1)
x
引用了myclass
。 myclass
正在执行shout
。当您将x
设置为null
时,您只是删除了对myclass
的引用,而不是myclass
对象本身。