簡體   English   中英

帶有相對變量的JavaScript回調函數

[英]JavaScript callback function with relative variables

我不完全確定如何表達這個問題,但基本上,我有一個類, button ,點擊它應該調用傳遞給它的函數。

button = function(...,callBack) {
    //...
    this._cb = callBack;
}
button.prototype.callBack = function(e) {
    //...
    this._cb();
}

然后在其他地方

//on canvas click
e.target.callBack(e);

(我希望這是關於適當數量的背景,如果需要,我可以提供更多)

所以我遇到的問題是當我動態實例化按鈕時,它們的回調使用數組中的數據。

for (var i = 0; i < levels.length; i++) {
    buttons[buttons.length] = new button(..., function() {drawLevel(levels[i])});
}

然后,當它們被單擊時,它們運行該回調代碼並嘗試為i找到一些隨機值(可能是一個不使用var的for循環)並運行該級別。

我的問題是,我怎么能(不使用eval)繞過這個問題。

謝謝!

我不是100%清楚你要問的是什么,但看起來你將在你在循環中創建的匿名函數中得到錯誤的值(它將始終是levels.length)

解決這個問題的方法是為每個創建的函數設置不同的范圍,每個范圍中的i都是循環中i的副本

buttons[buttons.length] = new button(..., (function(i){ 
    return function() {drawLevel(levels[i])};
})(i));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM