[英]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.