2011-12-21 3 views
3

Пусть у меня есть OBJ называется myObj и имеет функциональный тестПолучить объект функции Javascript

MyObj.prototype.test = function(){ 
    alert(this); 
} 

И я установил таймер:

setInteravl(myObj.test,1000); 

Поскольку это полностью зависит от как вы назвали функцию, это относится к окну вместо myObj в операторе оповещения

Что делать, если I нужна ли ссылка myObj?

ответ

4

Заверните его в анонимную функцию:

var myObj = new MyObj(); 

setInterval(function() {myObj.test();}, 1000); 

Или в современных реализациях, bind его.

var myObj = new MyObj(); 

setInterval(myObj.test.bind(myObj), 1000); 
+1

Обратите внимание, что в дополнение к решению 'this' проблему, обернув свой вызов функции в анонимной функции дает возможность передавать параметры функции (учитывая, что 'setInterval' и' setTimeout', очевидно, ничего не знают о параметрах вашей функции). – nnnnnn

+0

@nnnnnn: Очень верно и стоит отметить. –

1

Вы можете обернуть его в function:

setInteravl(function() {myObj.test()} ,1000); 
Смежные вопросы