如何让类构造函数在nodejs中创build新实例时发出事件

我有一个类MyClass:

var MyClass = function(){ events.EventEmitter.call(this); //... }; util.inherits(MyClass, EventEmitter); 

我希望它每次创buildMyClass的新实例时发出一个“新”事件:

 myClassInstance = new MyClass(); // emit a 'new' event from MyClass, not myClassInstance 

我想这样做,这样我就可以让观察者每创build一个MyClass的新实例就做一些事情。 例如:

 var MyClass = require('myclass'); MyClass.on('new', function(newInstance) { // do something with the new instance of MyClass }; 

有没有办法做到这一点?

你有两个select:

第一种方法是从MyClass发出,而是build立一个新的EventEmitter实例。

 var MyClassEmitter = new events.EventEmitter(); var MyClass = function(){ MyClassEmitter.emit('new', this); }; 

这是我会做的方式,因为它使用最less的幻想,不可能打破。

第二种方式,直接使用MyClass ,你需要将EventEmitter行为混合到你的构造函数中。

 var MyClass = function(){ MyClass.emit('new', this); }; // Mix functions directly onto function. Object.keys(events.EventEmitter.prototype).forEach(function(prop){ MyClass[prop] = events.EventEmitter.prototype[prop]; }); // Trigger constructor in MyClass context. events.EventEmitter.call(MyClass);