Object.create and inheritance
What is the difference between the resulting objects in the following examples:
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);
oConstr2 will have any properties set in the
EventEmitter constructor, but is there any other meaningful difference?
Your code is misleading. you use the term
oConstr when it's not a constructor function.
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
The only difference is that
temp is not just an object that inherits from
EventEmitter it also has own properties augmented from the call to
I'd personally recommend you use
EventEmitter.prototype and ignore
Personally I don't ever inherit from
EventEmitter, I mix it in