节点:将EventEmitter扩展到非原型对象
我总是看到这个:
Parrot.prototype.__proto__ = EventEmitter.prototype;
有了这个,每一次你build造一个新的鹦鹉,它可以squawk。
但是,假设我构造了一个具有函数的对象,并且不打算创build多个实例:
var parrot = { squawk: function(whatYouSaid){ this.emit("SQUAWK!!!!", whatYouSaid); } }
我将如何使这个扩展EventEmitter
? 我试过这个,但没有成功:
_.extend(parrot, (new EventEmitter()));
你应该扩展/分配EventEmitter.prototype
到你的对象:
_.assign(parrot, EventEmitter.prototype);
util.inherits
是在util.inherits
中进行inheritance的本地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!');
我做了不同的inheritance方式演示: https : //github.com/razvanz/nodejs-inheritance-demo 。