Показать сообщение отдельно
  #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 );
Ответить с цитированием