范围内回调的最佳做法

时间:2013-06-10 20:18:39

标签: node.js events event-handling

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

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

效果不错但延伸不好。方法可以更好地继承:

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

Something.prototype._onMessage = function(){ ... };

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

1 个答案:

答案 0 :(得分:2)

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

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

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

open-close principal处理此类问题。