范围内callback的最佳实践

通常,在“构造函数”中,您使用lambda函数来订阅事件:

function Something(){ this.on('message', function(){ ... }); } util.inherits(Something, events.EventEmitter); 

这工作得很好,但延伸不好。 方法更好地inheritance:

 function Something(){ this.on('message', this._onMessage); } util.inherits(Something, events.EventEmitter); Something.prototype._onMessage = function(){ ... }; 

保留这些事件处理函数的最佳实践是什么?

如果我正确地理解了这个问题,那么我认为这取决于你愿意做多less改变。

你的第二个例子打开子类(或,实际上,任何类)的选项来覆盖处理程序的代码,这不一定是件好事。

第一个例子可以防止重写,但代价是在构造函数中有匿名函数(有时包含大量的代码)。 然而,这个代码可以被提取到另一个私有函数(不在原型上,只是模块文件中的常规函数​​)。

开闭校长处理这类问题。