3
我想有一个名为MyObj中 OBJ,它有一个功能测试获取函数的对象中的JavaScript
MyObj.prototype.test = function(){
alert(this);
}
我设置定时器:
setInteravl(myObj.test,1000);
由于这完全取决于如何调用函数,这是指警告语句中的窗口而不是myObj
如果我需要myObj参考吗?
我想有一个名为MyObj中 OBJ,它有一个功能测试获取函数的对象中的JavaScript
MyObj.prototype.test = function(){
alert(this);
}
我设置定时器:
setInteravl(myObj.test,1000);
由于这完全取决于如何调用函数,这是指警告语句中的窗口而不是myObj
如果我需要myObj参考吗?
包装在一个匿名函数:
var myObj = new MyObj();
setInterval(function() {myObj.test();}, 1000);
用现代的实现,bind
它。
var myObj = new MyObj();
setInterval(myObj.test.bind(myObj), 1000);
您可以在function
包装它:
setInteravl(function() {myObj.test()} ,1000);
需要注意的是,除了解决'this'问题,您的包裹函数调用的匿名函数提供了一种参数传递给你的函数(因为'setInterval'和'setTimeout'显然不知道你函数参数的任何内容)。 – nnnnnn 2011-12-21 01:59:43
@nnnnnn:非常真实值得注意。 – 2011-12-21 02:01:29