我在相当多的Node.js库中看到了这种模式:
Master.prototype.__proto__ = EventEmitter.prototype;
(源here)
有没有人能举个例子给我解释一下,为什么这是一种如此常见的模式,什么时候它很方便?
发布于 2013-03-02 00:50:51
我认为来自http://www.bennadel.com/blog/2187-Extending-EventEmitter-To-Create-An-Evented-Cache-In-Node-js.htm的这种方法非常简洁:
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
发布于 2016-06-04 04:47:19
添加到wprl的响应中。他错过了“原型”部分:
function EventedObject(){
// Super constructor
EventEmitter.call(this);
return this;
}
EventObject.prototype = new EventEmitter(); //<-- you're missing this part
https://stackoverflow.com/questions/8898399
复制相似问题