node.js - 范围内回调的最佳实践

标签 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(){ ... };

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

最佳答案

如果我正确理解了这个问题,那么我认为这取决于您愿意接受多大程度的改变。

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

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

open-close principal处理此类问题。

关于node.js - 范围内回调的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032098/

相关文章:

javascript - 有没有办法判断某个事件是否已在之前的冒泡阶段中得到处理?

javascript - Mongoose 嵌入式文档对象是 Mongoose 对象吗?

templates - NodeJS + Express + Handlebars - 找不到 View "index.html"

node.js - Node.js 中的默认 SIGINT?

javascript DOMContentLoaded 事件监听器

windows - NXLog和旧的Windows事件

javascript - 通用 Javascript 事件

javascript - 如何将简单的 onClick 事件处理程序添加到 Canvas 元素?

node.js - 使用 multer 将多个图像上传到 AWS S3

java - 将事件传递给父级