尽管Javascript函数的类为null,但它仍然被调用

时间:2010-02-04 17:22:31

标签: javascript mootools

如果你可以向我解释为什么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/

基本上,我明白了这个想法:函数有自己的注册,现在独立于调用它的对象。但我很乐意得到真正的解释 感谢。

2 个答案:

答案 0 :(得分:6)

功能始终独立。只要有对函数的引用,它就会继续存在。在这种情况下,您的对象也是如此,因为您已经将对它的引用(通过this)传递给periodical()函数,该函数保留了它用于上下文。

答案 1 :(得分:1)

x引用了myclassmyclass正在执行shout。当您将x设置为null时,您只是删除了对myclass的引用,而不是myclass对象本身。