Спасибо, очень познавательно
Можете подсказать такой вопрос. Почему вызов функции extend после добавления методов/свойств, полного описания класса вызывает ошибку
Например(рабочий пример)
function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
/*Базовый*/
function X(x) {this.x = x;}
X.prototype.getX = function(){return this.x;}
/*Y*/
function Y(y) {this.y = y;}
extend(Y, X);
Y.prototype.getY = function(){return this.y;}
/*Add*/
function Add(x,y) {
this.x = x ;
this.y = y;
this.add = this.getX() + this.getY();
}
extend(Add, Y);
Add.prototype.getAdd = function(){return this.add;}
var addTwoNum = new Add(5,7);
console.log(addTwoNum.add);
все хорошо, наследуется, ошибок нет
А вот так вызовет уже ошибку
Цитата:
|
Uncaught TypeError: Object #<Add> has no method 'getY'
|
function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
/*Базовый*/
function X(x) {this.x = x;}
X.prototype.getX = function(){return this.x;}
/*Y*/
function Y(y) {this.y = y;}
Y.prototype.getY = function(){return this.y;}
/*Add*/
function Add(x,y) {
this.x = x ;
this.y = y;
this.add = this.getX() + this.getY();
}
Add.prototype.getAdd = function(){return this.add;}
extend(Y, X);
extend(Add, Y);
var addTwoNum = new Add(5,7);
console.log(addTwoNum.add);