给监听器传参

eventEmitter.emit() 方法允许将任意参数传递给监听器函数。需要牢记的是,一个普通的监听器函数被 EventEmitter 调用时,标准的 this 关键词会被刻意得设置成指向附加到监听器上的这个 EventEmitter 实例的引用。

  1. const myEmitter = new MyEmitter();
  2. myEmitter.on('event', function (a, b) {
  3. console.log(a, b, this);
  4. // 打印:
  5. // a b MyEmitter {
  6. // domain: null,
  7. // _events: { event: [Function] },
  8. // _eventsCount: 1,
  9. // _maxListeners: undefined }
  10. });
  11. myEmitter.emit('event', 'a', 'b');

也可以使用 ES6 的箭头函数作为监听器。然而,当你这么做时,this 关键词将不再引用 EventEmitter 实例。

  1. const myEmitter = new MyEmitter();
  2. myEmitter.on('event', (a, b) => {
  3. console.log(a, b, this);
  4. // 打印:a b {}
  5. });
  6. myEmitter.emit('event', 'a', 'b');