javascript - 什么是 "event emitter"?

标签 javascript events event-handling dom-events

浏览http://microjs.com ,我看到许多标有“事件发射器”的库。我喜欢认为我非常了解 Javascript 语言的基础知识,但我真的不知道“事件发射器”是什么或做什么。

有大佬解惑一下吗?听起来很有趣...

最佳答案

它会触发 event任何人都可以听。不同的库针对不同的目的提供不同的实现,但基本思想是提供一个用于发布事件和订阅事件的框架。

来自 jQuery 的示例:

// Subscribe to event.
$('#foo').bind('click', function() {
    alert("Click!");
});

// Emit event.
$('#foo').trigger('click');

但是,如果要使用 jQuery 发出事件,您需要有一个 DOM 对象,并且不能从任意对象发出事件。这就是事件发射器变得有用的地方。 下面是一些用于演示自定义事件的伪代码(与上面的模式完全相同):

// Create custom object which "inherits" from emitter. Keyword "extend" is just a pseudo-code.
var myCustomObject = {};
extend(myCustomObject , EventEmitter);

// Subscribe to event.
myCustomObject.on("somethingHappened", function() { 
    alert("something happened!");
});

// Emit event.
myCustomObject.emit("somethingHappened");

关于javascript - 什么是 "event emitter"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13438924/

相关文章:

javascript - 不使用 ID 和 FOR 并使用 angular.js 的自定义复选框/单选按钮

javascript - 仅向首次查看者显示消息

javascript - 将对象属性添加到 map 函数中

c# - 创建事件处理程序 +=

events - Lua中的KeyPress事件?

python - 使用 Tkinter 在 Matplotlib 中获取鼠标单击的位置

javascript - 带有 ajax 请求的 Bootstrap 模式

javascript - 如何防止按 ENTER 键提交 Web 表单?

javascript - 事件处理 jQuery unclick() 和 unbind() 事件?

javascript - 当前文档处于设计模式时是否可以捕获 KeyDown 事件?