Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста с canvas js

дима левченко Знаток (433), на голосовании 7 лет назад
Нужно что бы выводились strokeRect и fillRect с одинаковыми позициями, но почемуто при вызове функции stroke, выводит ошибку что функции не существует
https://jsfiddle.net/xqaw8kgp/
Голосование за лучший ответ
Сергей Иванов Просветленный (44675) 7 лет назад
Предполагаю, что с областями видимости ты что-то напутал.
Переменная, объявленная с помощью var ограничена областью видимости функции, а анонимная функция внутри setInterval имеет свою область видимости.
Wilat Ученик (207) 7 лет назад
Если честно, я с прототипами особо не разбираюсь. Но для меня непонятна сама логика. Вы присваиваете прототипу функцию, внутри которой создаёте функции. То есть, у вас prototype - функция, которая объявляет другие функции... И всё. Это по логике так получается.
Почему бы вам не попробовать сделать так:

Rect.prototype = {
draw: function() {
fillRect(this.x,this.y,this.w,this.h);
},
stroke: function() {
strokeRect(this.x,this.y,this.w,this.h);
}
}

Или так:

Rect.prototype.stroke = function() {
strokeRect(this.x,this.y,this.w,this.h);
}
Rect.prototype.draw = function () {
fillRect(this.x,this.y,this.w,this.h);
}

Оба варианта рабочие.
Похожие вопросы