对象.创建和继承



在以下示例中,结果对象之间的区别是什么?

var EventEmitter = require('events').EventEmitter;
var oProto  = Object.create(EventEmitter.prototype);
var oProto2 = Object.create(oProto);
var oConstr  = Object.create(new EventEmitter);
var oConstr2 = Object.create(oConstr);

我想oConstroConstr2将在EventEmitter构造器中设置任何属性,但是否有其他有意义的差异?

你的代码是误导。当它不是构造函数时,可以使用术语oConstr

oProto -> EventEmitter.prototype -> Object.prototype -> null
oProto2 -> oProto -> EventEmitter.prototype -> Object.prototype -> null
var temp = new EventEmitter;
oConstr -> temp -> EventEmitter.prototype -> Object.prototype -> null
oConstr2 -> oConstr -> etc

唯一的区别是temp不仅仅是一个从EventEmitter继承的对象,它还从调用EventEmitter.constructor.call(temp)中增加了自己的属性。

我个人建议你使用EventEmitter.prototype,忽略new EventEmitter

我个人从来没有继承过EventEmitter,我把它混合在

相关内容

  • 没有找到相关文章

最新更新