gpt4 book ai didi

javascript - 在 Javascript 中按值传递变量

转载 作者:行者123 更新时间:2023-11-30 09:46:56 25 4
gpt4 key购买 nike

我已经看到很多类似的问题,但感觉我仍然遗漏了一些东西。我有以下代码:

_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.buttonbuttons 中的最后一个按钮大批。我的结论是它正在推送对 this.button 的引用。而不是将值放入数组中,因此随着循环的进行,这个值会发生变化。如何将其设置为推送值而不是引用?

最佳答案

您得出的结论是正确的。

对于循环的每次迭代,您已将 this.button 指定为等于循环索引处的按钮。如果我们把它拆开,它看起来像;

this.button = buttons[0]
this.button = buttons[1]
this.button = buttons[2]

以此类推,直到循环结束。一旦它到达循环的末尾,this.button 就等于数组中的最后一个按钮。因此,当热键事件执行时,它自然会使用对 this.button 的引用,它指向数组中的最后一个按钮。

您应该将按钮[索引] 引用直接传递给您的处理程序,而不是将引用分配给类属性。

...
fn: function(key, event) {
this._handleFillInValueButtonToggle(button[index], true);
}

关于javascript - 在 Javascript 中按值传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38532584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com