Не могу вызвать по setInterval() метод класса.(отрабатывает всего 1 раз)
// Есть класс: function Matrix() { // В ней есть метод: this.move = function() { } } // Есть точка входа: window.onload = function() { // В ней я создаю объект: m1 = new Matrix(); // И пытаюсь запускать по таймеру метод move. setInterval(m1.move, 1000); } Возникает проблема - функция отрабатывает всего 1 раз, а нужно пока не остановлю. Помогите пожалуйста! |
может стоит попробовать так:
setInterval(m1.move, 1000); |
пробовал, это не решает проблему.
|
Вот пример:
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 ); |
Огромное спасибо за подробный ответ!!! Проблема решилась!:)
|
Часовой пояс GMT +3, время: 06:48. |