在mootools中调用没有上下文的.fireEvent()

时间:2012-06-06 14:23:30

标签: javascript mootools

以下一行有什么想法?

这里的“Popup”是什么类型的活动?

fireEvent('Popup','ok');

2 个答案:

答案 0 :(得分:5)

事件通常分为两种类型。 DOMEventClass.Event

最常见的是,后者是有意义的。 this.fireEvent('popup', 'ok');会让实例知道发生了什么奇妙的事情。

与Class中的[Options,Events] mixins一起使用,如果您的实例是使用以下内容创建的:

var foo = new someclass({
    onPopup: function(status) {
        console.log(status); // ok!
        console.log(this); // the instance (foo);
    }
});

// later.
foo.fireEvent('popup', 'fail');

但在你的情况下,我不确定这是关于一堂课的,因为:

您还可以在宽松/模糊的环境中使用事件,例如DOM元素,您可以在其中发布事件到pub / sub各种组件。例如。 window.fireEvent('popup', 'ok'); - 或者在您的示例中,fireEvent('popup')本身 - 将触发全局窗口对象上的事件回调,因为没有定义其他上下文。

这适用于您在块中添加的任何内容,如下所示:

window.addEvent('popup', function(status) {

});

不键入上下文对象对于范围链查找和可读性来说真的很糟糕。你只能做fireEvent('domready')这一事实并不意味着你应该这样做。写这篇文章的人正在采取不提高可读性的愚蠢捷径。 fireEvent本身是一个来自原型的expando属性,它不是一个全局变量/函数,尽管它看起来像你发布的代码一样......

答案 1 :(得分:2)

显然(和according to documentation)会使用参数'Popup'触发'ok'类型的事件。这看起来像自定义事件类型,因此要查明它究竟是什么以及它如何解释它的参数,您需要查阅处理此事件的代码的源代码或文档。