如何在纯JavaScript(而不是DOM元素事件)中创建自己的事件?

时间:2016-09-22 20:30:09

标签: javascript events

我有很多C#经验,并且正在尝试将其应用于在JavaScript中创建一些面向对象的客户端应用程序。

我已经用JavaScript创建了一些模块,我希望他们能够发布和收听其他模块中的事件。但是,我在查找用于在JavaScript中创建/使用事件的常规文档时遇到了问题。我发现的一切都是关于使用DOM元素定义的事件,但我希望将纯JavaScript对象与事件结合起来。

在C#中,事件是一种非常基本的对象成员,可以添加到任何类中。 C#事件对于类中的三个成员来说确实是语法糖

  1. A"多播委托",它在JavaScript中可能粗略地转换为对函数的引用数组。然后,代表可以被称为",它将以非确定性顺序调用每个引用的函数。
  2. 将侦听器函数添加到委托的add方法。
  3. 一个remove方法,用于删除代理的侦听器功能。
  4. 捕获此模式的简单JavaScript对象可能如下所示:

    var MyEvent = {
        Listeners: [],
        Trigger: function () {
            for (var i= 0; i < this.Listeners.length; i++) 
                Listeners[i]();            
        },
        Add: function(listener) { this.Listeners.push(listener); },
        Remove: function(listener) { this.Listeners.pop(listener); }
    }
    

    然而,我还没有找到任何描述这种模式的文章。有没有推荐的方法在Javascript中完成这样的事情?上述实现忽略了语言的细微之处吗?

0 个答案:

没有答案