Object.create和inheritance
以下示例中的结果对象之间有什么区别:
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
inheritance的对象,它还拥有自EventEmitter.constructor.call(temp)
调用中增加的属性。
我个人build议你使用EventEmitter.prototype
并忽略new EventEmitter
我个人从来没有从EventEmitter
inheritance, 我把它混入