私はよく似たような質問をしましたが、まだ何か不足しているように感じます。私は次のコードを持っています:JavaScriptを使って変数を値で渡す
_setHotKeys: function(values, buttons){
var hotKeyMap = {
target: document,
binding:[]
};
values.forEach(function(value, index){
if(value.hotkey){
this.button = buttons[index];
hotKeyMap.binding.push({
key: value.hotkey,
fn: function(key, event){
this._handleFillInValueButtonToggle(this.button, true);
},
scope: this
});
}
}, this)
var keyMap = new Ext.util.KeyMap(hotKeyMap);
},
この機能では、Ext.jsを使ってホットキーを設定しようとしています。このコードでは、value
アレイ内の各値のホットキーが設定されますが、すべてthis.button
がbuttons
アレイの最後のボタンに設定されています。私の結論は、配列への値ではなくthis.button
への参照をプッシュしているので、ループが進むにつれて、この値が変化します。参照の代わりに値をプッシュするように設定するにはどうすればよいですか?
「this._handleFillInValueButtonToggle(buttons [index]、true)」はどうですか? – elclanrs
http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example –
@elclanrs that worked!何らかの理由で 'buttons 'がスコープ外にあると思ったのですが、 –