这个模式的名字是什么: .on('eventName', function(){..});.
Whats the name of this pattern: .on('eventName', function(){...});?
你知道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
类似,但使用订阅者模式,您可以单独订阅/取消订阅,而不必将所有逻辑放在一个回调函数中。
查看发射器插件
- 直接在函数声明上使用function.prototype.bind
- jQuery:.click(function(){(element),collapse('show',f
- 如果连接类型为none,则Javascript Function Only警报
- onLoad function phonegap android
- reducers在redux中得到Function not Object,what'it’他错了
- WIll window.addEventListener(“加载”,function(),false);等待浏览器自动填
- $(document).ready和jQuery(function($)不工作;jQuery已定义,但脚本尚未定义;t进
- Javascript onunload function
- 在init function()中调用getElementById(“..”),而不是想用它做点什么的函数
- spyOn:应为间谍,但得到了Function
- (typeof variable === “function”) 和 jQuery.isFunction() 有什么区别
- this内部的值返回this.each(function(){})
- 如何在JavaScript中创建类似于something.function()的函数
- 如何通过 Function.prototype.apply() 更改调用函数的参数
- 控制台中的“function floor(){[本机代码]}”是什么
- ASPX Jquery 1.11 $(Document).ready(function() {} was skipped
- Function.prototype.call和Function.protoype.all只应用一个参数
- 将angular javascript文件包装为“;(function(){..[js-code here]…})()&
- 从Function触发JQuery UI日期选择器,并将日期存储到变量中
- 这个模式的名字是什么: .on('eventName', function(){..});.