许多图书馆是如何制作自己的事件监听器和自己的事件的,就像在传单图书馆中一样?

How did many libraries make their own event listener and their own events, like in the leaflet library?

在许多库中,例如 leaflet, they have their own events, like the 'resize', or 'zoom' events, you can see them at here,它们也有自己的事件对象,具有自定义属性,而那些事件对象没有 DOM 事件的属性,如气泡、cancelBubble等。他们使用 on() 方法来监听这些事件。

我想知道,他们是怎么做到的,他们是如何创建自己的事件、事件对象和他们自己的事件监听器的,我听说过一个叫做 'Event Emitter' 的东西,但它是 nodejs 的一部分,它只能在浏览器之外工作,所以我想知道他们是如何让它们在浏览器中工作的。

我猜他们创建了自己的事件发射器并在他们的库中使用它们,因为在互联网上有许多可以在浏览器中工作的手工构建的事件发射器(我不确定这是不是真的),所以我猜它仍然可以在浏览器中使用类似于 'event emitter' 的东西。

那么真相是什么?他们如何使这些事件和事件监听器像在浏览器中使用 Event Emitter 一样。非常感谢您阅读这个问题,我不确定这是不是一个好问题,但希望我能知道你们的答案,非常感谢!

您可以发送自己的 custom events 作为 DOM API 的一部分。

// add an appropriate event listener
obj.addEventListener("cat", function(e) { process(e.detail) });

// create and dispatch the event
var event = new CustomEvent("cat", {
  detail: {
    hazcheeseburger: true
  }
});
obj.dispatchEvent(event);