@hero564

Почему не переопределяется функция?

function Button(t_color_in,t_color_out,pos,perimetr,click_func){
	HShape.call(this,pos,perimetr);
	this.onclick_color=t_color_in;
	this.unclick_color=t_color_out;
	console.log('hello');
}
Button.prototype=Object.create(HShape.prototype);
Button.prototype.constructor=Button;

Button.prototype.draw = function(hcanvas){
	HShape.prototype.draw.apply(this,hcanvas);
	if (this.isPointInside(mouse.position)){
		this.color=this.onclick_color;
	}else{
		this.color=this.unclick_color;
	}
	console.log(this.isPointInside(mouse.position));
};
var button =new Button(........);
button.draw();//здесь исполняется функция HShape.draw а не Button.draw()

имеет ли значение как определялись функции в HShape?
я сейчас они определяються:
function HShape(){
    this.draw=function(){
    }
}

или нужно через HShape.prototype?
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
Если перенести draw базового класса в прототип - все доллжно работать правильно. Происходит это потому что вызов конструктора базового класса добавляет вашему дочернему классу метод draw в this. И при вызове draw он находится первее, чем метод из прототипа.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы