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

tjrkku2a  于 6个月前  发布在  jQuery
关注(0)|答案(1)|浏览(51)

在jQuery库中,该函数不存在,但每个jQuery对象都有这些基本方法。在另一个线程中,有人说.on()属于节点API,这让我感到困惑,因为它可以在前面使用-end,我甚至不需要包括const EventEmitter = require('events');,jquery.min.js也不需要。我只是想了解为什么字符串“click”或“mouseover”是有效的论点。
此外,on()方法还广泛使用了回调函数。
我想理解为什么它可以传递一个lambda函数或如上所述的“事件”。
此外,有些人可能会发现以下资源很有用,但是,它并不是那么简单,让我提出的问题比答案多:https://nodejs.org/docs/latest/api/events.html

kqlmhetl

kqlmhetl1#

on方法注册了一个handler,它是一个具有特定签名的回调函数。一旦事件被触发,就会调用一个handler。它接收必要的数据作为函数参数(通常是event对象)。
jQuery和Node事件发射器没有任何关系,它们都有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' });

字符串

相关问题