Объект.создание и наследование
В чем разница между полученными объектами в следующих примерах:
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
конструктор, но есть ли другая значимая разница?
1 ответ
Решение
Ваш код вводит в заблуждение. вы используете термин 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
Я смешиваю