我一直都这么看:
Parrot.prototype.__proto__ = EventEmitter.prototype;
有了这个,每次你构造一只新的鹦鹉,都会发出嘎嘎声。
但是,假设我使用函数构造一个对象并且不打算创建多个实例:
var parrot = {
squawk: function(whatYouSaid){
this.emit("SQUAWK!!!!", whatYouSaid);
}
}
我如何延长EventEmitter
?我试过这个,但它没有工作:
_.extend(parrot, (new EventEmitter()));
答案 0 :(得分:3)
您应该将EventEmitter.prototype
扩展/分配给您的对象:
_.assign(parrot, EventEmitter.prototype);
答案 1 :(得分:-1)
util.inherits
是在NodeJS中进行继承的本机API。
var EventEmitter = require('events').EventEmitter,
util = require('util');
function Parrot(){
EventEmitter.call(this);
...
}
util.inherits(Parrot, EventEmitter);
var parrot = new Parrot();
parrot.on('SQUAWK!!!!', whatYouSaid);
parrot.emit('SQUAWK!!!!', 'I said this!');
我演示了不同的继承方式:https://github.com/razvanz/nodejs-inheritance-demo。