Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.08.2011, 15:50
Новичок на форуме
Отправить личное сообщение для ekonomizer Посмотреть профиль Найти все сообщения от ekonomizer
 
Регистрация: 06.08.2011
Сообщений: 5

Не могу вызвать по setInterval() метод класса.(отрабатывает всего 1 раз)
// Есть класс:

function Matrix()
{
        // В ней есть метод:
        this.move = function()
        {
        }
}

// Есть точка входа:
window.onload = function()
{
       // В ней я создаю объект:
       m1 = new Matrix();

       // И пытаюсь запускать по таймеру метод move.
       setInterval(m1.move, 1000);
}


Возникает проблема - функция отрабатывает всего 1 раз, а нужно пока не остановлю.
Помогите пожалуйста!

Последний раз редактировалось ekonomizer, 06.08.2011 в 16:24.
Ответить с цитированием
  #2 (permalink)  
Старый 06.08.2011, 16:13
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

может стоит попробовать так:
setInterval(m1.move, 1000);
Ответить с цитированием
  #3 (permalink)  
Старый 06.08.2011, 16:23
Новичок на форуме
Отправить личное сообщение для ekonomizer Посмотреть профиль Найти все сообщения от ekonomizer
 
Регистрация: 06.08.2011
Сообщений: 5

пробовал, это не решает проблему.
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2011, 16:47
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Вот пример:
function test(){
  alert( this );
};

var a = test,
    b = {
      c: test
    };

a();//этот вызов покажет window
b.c();//здесь - объект переменной b

Так вот к чему это я:
setInterval(m1.move, 1000);

Здесь в setInterval передается функция, при этом она уже оторвана от контекста, и this ссылается на глобальный объект:
//Есть конструктор (классов нет)
function Constructor(){
  this.method = function(){
    alert( this );
  };
};

var instance = new Constructor;

instance.method();
// выведет instance

setTimeout( instance.method, 1 );
// выведет window

// выход: использование промежуточной функции-обертки
setTimeout( function(){
  instance.method();
  // выведет instance
}, 1 );
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2011, 17:43
Новичок на форуме
Отправить личное сообщение для ekonomizer Посмотреть профиль Найти все сообщения от ekonomizer
 
Регистрация: 06.08.2011
Сообщений: 5

Огромное спасибо за подробный ответ!!! Проблема решилась!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Как внутри класса вызвать метод из соседнего метода Shahurik Общие вопросы Javascript 2 13.11.2009 12:20