Другие ответы касаются этого, но если вы действительно хотите наследовать прототип, вы можете использовать некоторую паразитическую магию:
Object.prototype.inherit = function(p) {
NewObj = function(){};
NewObj.prototype = p;
return new NewObj();
};
// Paraphrasing of Nicholas Zakas's Prototype Inheritance helper
function inheritPrototype(subType, superType) {
var prototype = Object.inherit(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
};
Теперь вы можете заменить:
Hoozit.prototype = new Gizmo();
с
inheritPrototype(Hoozit, Gizmo);
Это может не стоить хлопот, если у вас нет действительно большого конструктора Gizmo (единственная победа в моем предложении заключается в том, что вам не нужно вызывать конструктор Gizmo для подключения прототипа). У меня есть примеры многих из этих типов шаблонов в TDD Примеры JavaScript .