Сообщение от Lerayne
|
я решил проблему путем вызова Child.superclass.constructor.apply(this, arguments) внутри дочернего класса
|
неверный подход, дочерний класс (да и кто угодно другой) может создавать экземпляр родительского, только если это нужно по смыслу, но не ради того что бы выдернуть из него какие-то значения. В конце концов, в конструкторе родительского класса может помимо вычислений нужных значений происходить что-то, что пока совсем не нужно (например, ajax-запрос).
Сообщение от Lerayne
|
что если в родительском классе есть не только объявление свойств и методов, но и некие действия со свойствами
|
тогда создаем метод выполняющий "некие действия со свойствами" и используемый в обоих конструкторах (дочерний класс унаследует его):
function extend(Parent, Child) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
var Parent = function() {
// Используем в родительском конструкторе
alert(this.method());
};
Parent.prototype.method = function() {
return 'Вычисляются какие-то значения';
};
var Child = function() {
// Используем в дочернем конструкторе
alert(this.method());
};
extend(Parent, Child);
new Child();