我有一個函數,它在setTimeout上遞歸調用自己。問題是它一路上失去了它的範圍。Javascript範圍,如何保留模塊
所以這是我...
var module = function() {
function init() {
if (notYetReadySoTryAgain) {
setTimeout(this.init,100);
return
}
}
}
通過我得到的init不能找到(window對象)錯誤的第二次。
通過setTimeout處理維護對模塊的引用的規範方法是什麼?
你做一個封閉。 google搜索'javascript closure' – unludo
'notYetReadySoTryAgain'定義在哪裏? –
只需省略['this'關鍵字](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this),這與範圍無關。你可以通過'setTimeout(init,100)'直接引用'init'函數 - 它不是任何屬性。 – Bergi