通常,在“构造函数”中,您可以使用 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(){ ... };
保留这些事件处理函数的最佳实践是什么?
最佳答案
如果我正确理解了这个问题,那么我认为这取决于您愿意接受多大程度的改变。
您的第二个示例打开了子类(或者实际上是任何类)覆盖处理程序代码的选项,这不一定是一件好事。
第一个示例可以防止重写,但代价是在构造函数中使用匿名函数(有时包含大量代码)。但是,可以将此代码提取到另一个私有(private)函数(不在原型(prototype)上,只是模块文件中的常规函数)。
open-close principal处理此类问题。
关于node.js - 范围内回调的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032098/