我有很多C#经验,并且正在尝试将其应用于在JavaScript中创建一些面向对象的客户端应用程序。
我已经用JavaScript创建了一些模块,我希望他们能够发布和收听其他模块中的事件。但是,我在查找用于在JavaScript中创建/使用事件的常规文档时遇到了问题。我发现的一切都是关于使用DOM元素定义的事件,但我希望将纯JavaScript对象与事件结合起来。
在C#中,事件是一种非常基本的对象成员,可以添加到任何类中。 C#事件对于类中的三个成员来说确实是语法糖
add
方法。remove
方法,用于删除代理的侦听器功能。捕获此模式的简单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中完成这样的事情?上述实现忽略了语言的细微之处吗?