Не могу вызвать по 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:52. |