如何定义JavaScript.on()方法?

如何定义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=>{…}) 我想了解为什么可以像上面所说的那样

在jQuery库中,函数不存在,但是每个jQuery对象都有这些基本方法。在另一个线程中,有人说.on()属于节点API,这让我很困惑,因为它可以在前端使用,我甚至不需要包含
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()
是一个完全合成的函数,这里绝对没有“继承”。回答得很好,谢谢。