这个模式的名字是什么: .on('eventName', function(){..});.

Whats the name of this pattern: .on('eventName', function(){...});?

本文关键字:eventName function 模式 是什么 on      更新时间:2023-09-26

你知道jQuery,socket.io,peerjs和其他一些用于事件处理的库/框架中存在的.on('eventName', function(){...});模式,它叫什么?

我想更好地了解幕后的结构,它可以做什么,到底发生了什么等等,但无法从谷歌搜索中发现太多,这个模式有名字吗? 有没有特定的人想出了这种模式?

从我目前所能收集到的信息来看,它似乎与addEventListener相似,有什么具体的区别吗?

编辑:只是为了澄清一点,我希望在我的一个 Node JS 应用程序中实现某种类型的事件处理,理想情况下希望能够触发将捕获的事件,如下所示,并且正在寻找对最佳实践的研究 - 只是无法找出好的搜索词等。

var myNewObject = new MyLibrary();
myNewObject.on('event_1', function(param1, param2){
...
});

谢谢!

如果你自己滚动,这是一种方法:

notJQuery = function() {
    if (typeof(notJQuery.eventList) === 'undefined') {
        notJQuery.eventList = {};
    }
    this.on = function(events, callback) {
        events = events.split(' ');
        for (i in events) {
            eventName = events[i];
            notJQuery.eventList[eventName][] = callback;
        }
    };
    return this;
};

您需要一个事件列表来保存所有eventName => callback关联。

每次你想要触发一个"人为"事件(一个由你设计的事件)时,你都会查找事件列表并找到该事件的所有回调。

每次更新真实事件(不是由您设计的)的事件处理程序时,您都会查找事件列表并将该事件的这些回调附加到系统提供的事件处理程序/侦听器。

它实际上不是一个模式,它实际上只是一个带有两个参数的函数。

通常,你从一个主对象开始,jQuery使用$,然后返回该对象的新实例。

然后附加属性,如 on(),这些属性是接受参数的函数,就像任何其他函数一样。

非常简化,看起来像这样

var $ = function(selector) {
    if (!(this instanceof $)){
        var instance = new $;
        instance.elem = document.querySelector(selector);
        return instance;
    }else{
        return this;
    }
}
$.prototype.on = function(event, callback) {
    this.elem.addEventListener(event, callback, false);
}
$('#test').on('click', function() {
    alert('This is how it works')
});

小提琴

我刚刚在两分钟内创建了看起来像jQuery的东西。当然,它缺少几千行代码并且相当有限,但它显示了它是如何工作的,它只是对象和函数,并没有真正的特殊模式。

它被称为可观察模式,用于订阅 javascript 对象或插件的事件和/或方法。

它们与callbacks类似,但使用订阅者模式,您可以单独订阅/取消订阅,而不必将所有逻辑放在一个回调函数中。

查看发射器插件