2011-12-21 94 views
3

我想有一个名为MyObj中 OBJ,它有一个功能测试获取函数的对象中的JavaScript

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

我设置定时器:

setInteravl(myObj.test,1000); 

由于这完全取决于如何调用函数,这是指警告语句中的窗口而不是myObj

如果我需要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 2011-12-21 01:59:43

+0

@nnnnnn:非常真实值得注意。 – 2011-12-21 02:01:29

1

您可以在function包装它:

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