我在许多Node.js库中看到了这种模式:
Master.prototype.__proto__ = EventEmitter.prototype;
(在这里获得)
有人可以举个例子给我解释一下,为什么这是一种常见的模式,什么时候方便?
就像该代码上面的注释所言,它将Master继承自EventEmitter.prototype,因此您可以使用该“类”的实例来发出和侦听事件。
Master
EventEmitter.prototype
例如,您现在可以执行以下操作:
masterInstance = new Master(); masterInstance.on('an_event', function () { console.log('an event has happened'); }); // trigger the event masterInstance.emit('an_event');
更新 :正如许多用户指出的那样,在Node中执行此操作的“标准”方法是使用“ util.inherits”:
var EventEmitter = require('events').EventEmitter; util.inherits(Master, EventEmitter);
第二次更新 :随着我们对ES6类的关注,建议立即扩展EventEmitter该类:
EventEmitter
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const myEmitter = new MyEmitter(); myEmitter.on('event', () => { console.log('an event occurred!'); }); myEmitter.emit('event');
请参阅https://nodejs.org/api/events.html#events_events