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