javascript - 回调引用和继承javascript

标签 javascript arrays inheritance for-loop

我在一个多级数组(对象?)中有两条数据,我在带有 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/

相关文章:

javascript - 无法使用 Ant 在 Javascript 或 Jython 中创建 XSLT 扩展

java - 如何在java运行时创建数组?

javascript - 在对象实例化期间扩展 javascript 对象

c# - C#中不调用基类构造函数的继承问题

用于匹配 css 图像 url 但不匹配数据 url 的 Javascript 正则表达式

javascript - 不变性和更新本地状态的嵌套键

.net - .NET 中数组的对齐方式

c++ - 方法是否覆盖虚拟

javascript - 比较 JavaScript 数组

java - 删除和移动数组中的对象