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);
I suppose oConstr
and 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 EventEmitter.constructor.call(temp)
.
I'd personally recommend you use EventEmitter.prototype
and ignore new EventEmitter
Personally I don't ever inherit from EventEmitter
, I mix it in