首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js -从EventEmitter继承

Node.js -从EventEmitter继承
EN

Stack Overflow用户
提问于 2012-01-18 00:44:46
回答 2查看 87.4K关注 0票数 93

我在相当多的Node.js库中看到了这种模式:

代码语言:javascript
复制
Master.prototype.__proto__ = EventEmitter.prototype;

(源here)

有没有人能举个例子给我解释一下,为什么这是一种如此常见的模式,什么时候它很方便?

EN

回答 2

Stack Overflow用户

发布于 2013-03-02 00:50:51

我认为来自http://www.bennadel.com/blog/2187-Extending-EventEmitter-To-Create-An-Evented-Cache-In-Node-js.htm的这种方法非常简洁:

代码语言:javascript
复制
function EventedObject(){

  // Super constructor
  EventEmitter.call( this );

  return( this );

}

Douglas Crockford也有一些有趣的继承模式:http://www.crockford.com/javascript/inheritance.html

我发现在JavaScript和Node.js中很少需要继承。但在编写继承性可能会影响可伸缩性的应用程序时,我会考虑性能与可维护性之间的权衡。否则,我只会根据哪些模式会带来更好的整体设计,更易维护,更不容易出错来做出决定。

使用Google Chrome (V8)在jsPerf中测试不同的模式,以获得粗略的比较。V8是Node.js和Chrome都使用的JavaScript引擎。

下面是一些帮助您入门的jsPerfs:

http://jsperf.com/prototypes-vs-functions/4

http://jsperf.com/inheritance-proto-vs-object-create

http://jsperf.com/inheritance-perf

票数 5
EN

Stack Overflow用户

发布于 2016-06-04 04:47:19

添加到wprl的响应中。他错过了“原型”部分:

代码语言:javascript
复制
function EventedObject(){

   // Super constructor
   EventEmitter.call(this);

   return this;

}
EventObject.prototype = new EventEmitter(); //<-- you're missing this part
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8898399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档