7
我想用我的自定義作用域調用window.setTimeot
函數,所以我使用call
方法,但出現錯誤。javascript setTimeout調用錯誤
function foo() {
this.bar = function() {
console.log("keep going");
window.setTimeout.call(this,this.bar,100);
}
this.bar();
}
new foo;
下的Firefox此打印到控制檯只有1號線,然後什麼都沒有,和谷歌在Chrome瀏覽器,它拋出一個TypeError
。
我的代碼有什麼問題?
謝謝,我知道這種方式的工作原理,我正在嘗試使用'call'。 – 2011-05-24 14:55:36
@omnosis:你不能爲此使用'call'。你正在尋找的是['bind'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind),它是新ECMAScript 5規範的一部分。使用它,你可以這樣做:'window.setTimeout(this.bar.bind(this),100)'。 – casablanca 2011-05-24 14:57:55
非常有意義。我犯了同樣的錯誤,在'setTimeout'上使用'call'是沒有意義的,因爲你不是想改變'setTimeout'的'this',而是作爲參數傳遞的函數。乾杯 – chiliNUT 2015-07-29 22:28:09