在以下示例中,结果对象之间的区别是什么?
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);
我想oConstr
和oConstr2
将在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
,我把它混合在