我在很多 node 上都看到了这种模式.js库:
Master.prototype.__proto__ = EventEmitter.prototype;
(来源here)
有人能给我举个例子解释一下,为什么这是一个如此常见的模式,什么时候方便?
我在很多 node 上都看到了这种模式.js库:
Master.prototype.__proto__ = EventEmitter.prototype;
(来源here)
有人能给我举个例子解释一下,为什么这是一个如此常见的模式,什么时候方便?
正如上面代码的注释所说,它将使Master
从EventEmitter.prototype
继承,因此您可以使用该"类"的实例来发出和侦听事件.
例如,你现在可以做:
masterInstance = new Master();
masterInstance.on('an_event', function () {
console.log('an event has happened');
});
// trigger the event
masterInstance.emit('an_event');
Update:正如许多用户指出的,在Node中实现这一点的"标准"方法是使用"util".继承人:
var EventEmitter = require('events').EventEmitter;
util.inherits(Master, EventEmitter);
2nd Update:随着ES6课程的到来,我们建议现在扩展EventEmitter
个课程:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('an event occurred!');
});
myEmitter.emit('event');