我在一个多级数组(对象?)中有两条数据,我在带有 2 个 for 循环的回调函数集中引用它们。但是,我不知道如何将当前循环值放入回调中:它使用所有回调的最后一个值。
for (k in myobj.myarr) {
for (m in myobj.myarr[k]){
document.addEventListener(
k,
function(event){
myobj.myfn(event, myobj['myarr'][k][m][0], myobj['myarr'][k][m][1]);
},
true
);
}
}
其中 myobj['myarr'][k][m][0]
是字符串,myobj['myarr'][k][m][1]
是函数。我的函数中有一个console.log,并且总是调用相同的函数(最后一个)。
是的,这可能是一个奇怪的实现,不,我不能使用库。如何从数组中获取正确的值以传递给回调函数?
最佳答案
你真正想要的是绑定(bind)到一个只有一个听众知道的上下文。为了清楚起见,您可以定义如下函数:
function doEvent(k, myobj, m) {
document.addEventListener(
k,
function(event){
myobj.myfn(event, myobj['myarr'][k][m][0], myobj['myarr'][k][m][1]);
},
true
);
}
...并为数组中的每个对象调用它:
for (k in myobj.myarr) {
for (m in myobj.myarr[k]){
doEvent(k, myobj, m);
}
}
现在,事件将特定于循环中各自的m
。
关于javascript - 回调引用和继承javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13089418/