Объект.создание и наследование

В чем разница между полученными объектами в следующих примерах:

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 Я смешиваю

Другие вопросы по тегам