Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2014, 11:02
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

функция 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) работает и с переменными.
Помогите понять пожалуйста в чем беда...((
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2014, 11:24
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

А если так передавать, то работает:
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();
    }


Как так????????Голову можно сломать!!!
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2014, 11:26
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

this в фунции .draw указывает на другой объект потому что это другая функция;

в функции function MyRectangle создай переменную через var и она будет доступна в функции .draw через замыкание
каждый вызов MyRectangle() будет создавать замыкание в котором и будет хранится уникальное значение в переменной var;
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2014, 11:29
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

Сообщение от MallSerg Посмотреть сообщение
this в фунции .draw указывает на другой объект потому что это другая функция;

в функции function MyRectangle создай переменную через var и она будет доступна в функции .draw через замыкание
каждый вызов MyRectangle() будет создавать замыкание в котором и будет хранится уникальное значение в переменной var;
А почему же тогда ctx.lineTo(this.cordx2,this.cordy2) отрисовывает с верными координатами???

Подскажи пожалуйста,что значит замыкание,если не сложно черкани код


То это не работает

Последний раз редактировалось ДанилаDeep, 29.08.2014 в 11:35.
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2014, 11:34
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

В данном случае this используется в той же функции просто передача параметров функции.
в первом примере создается новая функция и уже внутри нее ты обращается к this
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2014, 11:41
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

Сообщение от MallSerg Посмотреть сообщение
В данном случае this используется в той же функции просто передача параметров функции.
в первом примере создается новая функция и уже внутри нее ты обращается к this
Если не сложно,можно кодом обьяснить,а то я не догоняю,честно
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2014, 14:02
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Один раз ты используешь this в одной функции, второй раз - в другой. Один раз this имеет одно значение, второй - совершенно другое. Что непонятно?
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2014, 14:21
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

Сообщение от Erolast Посмотреть сообщение
Один раз ты используешь this в одной функции, второй раз - в другой. Один раз this имеет одно значение, второй - совершенно другое. Что непонятно?
Почему тогда если:
function MyRectangle(x1){
	    this.cordx1 = x1;
	    this.draw = function(){
                alert(this.cordx1);
	    }
	}

Rectangle = new MyRectangle(10)
Rectangle.draw();

выводится 10, т.е. значение this.cordx1 ????


Если так не получается передать параметр , то как можно?опишите пожалуйста,если вы знаете, я правда замучался!!!!
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2014, 15:16
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

ДанилаDeep,
я спасу тебя! Присмотрись внимательно к этому куску кода, падаван:

this.corxy1 = y1;


Что ты видишь в нём?
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2014, 15:22
Интересующийся
Отправить личное сообщение для ДанилаDeep Посмотреть профиль Найти все сообщения от ДанилаDeep
 
Регистрация: 28.08.2014
Сообщений: 10

Сообщение от Safort Посмотреть сообщение
ДанилаDeep,
я спасу тебя! Присмотрись внимательно к этому куску кода, падаван:

this.corxy1 = y1;


Что ты видишь в нём?
Спасибо мастер!!!!Вот действительно стоящий ответ!!!!!!Благодаря тебе, я снова преисполнен надеждой решить задачу!!!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает функция Date demoniqus Общие вопросы Javascript 1 04.10.2013 19:40
Не работает пользовательская функция Synov_son Общие вопросы Javascript 6 14.09.2013 14:36
Не работает функция innerHTML. Dmitriy78781 jQuery 3 14.08.2013 20:26
Не корректно работает slice Dotod Общие вопросы Javascript 20 30.01.2010 23:31
Opera не корректно работает со скриптом Anat.nem Opera, Safari и др. 4 30.10.2009 13:39