функция MoveTo() не корректно работает
Всем доброе утро! Не могу понять,хоть убей,почему в функцию не передаются параметры,вот код
function MyRectangle(x1,y1,x2,y2,x3,y3,x4,y4){ this.cordx1 = x1; this.corxy1 = y1; this.cordx2 = x2; this.cordy2 = y2; this.cordx3 = x3; this.cordy3 = y3; this.cordx4 = x4; this.cordy4 = y4; this.draw = function(){ ctx.beginPath(); ctx.lineWidth = "10"; ctx.strokeStyle = "blue"; ctx.moveTo(this.cordx1,this.cordy1); ctx.lineTo(this.cordx2,this.cordy2); ctx.stroke(); } } ctx.moveTo(this.cordx1,this.cordy1) не работает почему то, когда ей тут присваиваешь переменные,а если напрямую число присвоить то она работает. В то время как ctx.lineTo(this.cordx2,this.cordy2) работает и с переменными. Помогите понять пожалуйста в чем беда...(( |
А если так передавать, то работает:
this.draw = function(x,y){ ctx.beginPath(); ctx.lineWidth = "10"; ctx.strokeStyle = "blue"; ctx.moveTo(x,y); ctx.lineTo(this.cordx2,this.cordy2); ctx.stroke(); } Как так????????Голову можно сломать!!! |
this в фунции .draw указывает на другой объект потому что это другая функция;
в функции function MyRectangle создай переменную через var и она будет доступна в функции .draw через замыкание каждый вызов MyRectangle() будет создавать замыкание в котором и будет хранится уникальное значение в переменной var; |
Цитата:
Подскажи пожалуйста,что значит замыкание,если не сложно черкани код То это не работает |
В данном случае this используется в той же функции просто передача параметров функции.
в первом примере создается новая функция и уже внутри нее ты обращается к this |
Цитата:
|
Один раз ты используешь this в одной функции, второй раз - в другой. Один раз this имеет одно значение, второй - совершенно другое. Что непонятно?
|
Цитата:
function MyRectangle(x1){ this.cordx1 = x1; this.draw = function(){ alert(this.cordx1); } } Rectangle = new MyRectangle(10) Rectangle.draw(); выводится 10, т.е. значение this.cordx1 ???? Если так не получается передать параметр , то как можно?опишите пожалуйста,если вы знаете, я правда замучался!!!! |
ДанилаDeep,
я спасу тебя! Присмотрись внимательно к этому куску кода, падаван: this.corxy1 = y1; Что ты видишь в нём? |
Цитата:
|
Часовой пояс GMT +3, время: 19:37. |