Я думаю, что это сработает, если вы назначите
Sub.prototype = new Base()
Проблема в том, что конструктор никогда не запускается, когда вы назначаете его непосредственно из Base.prototype.value. Это значение не будет существовать, пока у вас не будет экземпляра Базового класса (через new
)
Это мой типичный метод расширения Function
для достижения наследования:
Function.prototype.Extend = function(superClass) {
this.prototype = new superClass();
this.prototype.getSuperClass = function() {
return superClass;
};
this.getSuperClass = this.prototype.getSuperClass;
return this;
};
Это правильно назначит все методы и свойства родительских классов дочернему классу.
Использование выглядит как
var Sub = function() {}
Sub.Extend(Base)