如何定义JavaScript.on()方法?
在jQuery库中,函数不存在,但是每个jQuery对象都有这些基本方法。在另一个线程中,有人说.on()属于节点API,这让我很困惑,因为它可以在前端使用,我甚至不需要包含如何定义JavaScript.on()方法?,javascript,jquery,node.js,event-handling,Javascript,Jquery,Node.js,Event Handling,在jQuery库中,函数不存在,但是每个jQuery对象都有这些基本方法。在另一个线程中,有人说.on()属于节点API,这让我很困惑,因为它可以在前端使用,我甚至不需要包含const EventEmitter=require('events')和jquery.min.js也没有。我只想了解为什么字符串“click”或“mouseover”是有效参数 此外,on()方法广泛使用回调函数。 例如: $('class')。在('click',event=>{…}) 我想了解为什么可以像上面所说的那样
const EventEmitter=require('events')
和jquery.min.js也没有。我只想了解为什么字符串“click”或“mouseover”是有效参数
此外,on()方法广泛使用回调函数。
例如:
$('class')。在('click',event=>{…})
我想了解为什么可以像上面所说的那样将其传递给lambda函数或“事件”
此外,有些人可能会发现以下资源很有用,但是,它并不是那么简单,让我提出的问题多于答案:
on
方法注册一个处理程序,它是具有特定签名的回调函数。一旦触发事件,就会调用处理程序。它接收必要的数据作为功能参数(通常为事件
对象)
jQuery和节点事件发射器没有任何关系,它们都有on
方法,因为这是添加事件处理程序的方法的常规方法
显示其工作原理的简单实现:
const emitter = {
handlers: {},
on(eventName, handler) {
if (!this.handlers[eventName])
this.handlers[eventName] = [];
this.handlers[eventName].push(handler);
},
emit(eventName, data) {
for (const handler of this.handlers[eventName])
handler(data);
}
};
emitter.on('foo', data => console.log(data.text));
emitter.emit('foo', { text: 'Foo event triggered' });
各种库在事件处理中使用“on”作为名称(或名称的一部分),这是因为该词在普通英语用法中的含义。jQuery
.on()
与任何节点API都没有直接关系,只是与名称无关。jQuery.on()
确实“存在”在库源代码中,但jQuery代码的编写是为了效率,而不是可读性。Node.JS.on
和jQuery.on
是不同的。你似乎把它们都弄混了。你说JQuery库中不存在这个函数是什么意思?它是有文档记录的。@b DOM模型定义了一个方法,而不是()上的on
方法on()
是一个完全合成的函数,这里绝对没有“继承”。回答得很好,谢谢。