如何使用动态内容创建函数并将它们存储在对象中?

时间:2016-11-28 16:17:54

标签: javascript

我想根据数据表中的内容创建多个不同的函数,并将它们存储在一个对象中供以后使用。

让我们看看这个简单的例子:

var arrayPl = [];

function myFunction() {
  var carNames = ["Volvo", "Nissan"];
  var counter = 0;
  for (var i in carNames) {
    arrayPl[counter] = function() {
      alert(carNames[i]);
    };
    counter++;
  }
}

myFunction();
arrayPl[0]();

在这里,我想创建与car names一样多的函数,并将它们保存在一个对象arrayPl中,我可以在以后调用这些函数。
现在显然这个例子没有解释为什么我需要这样做 - 但至少它显示了我的问题,因为第一个函数arrayPl[0]();给了我第二个汽车名称而不是第一个。 解释这背后的原因对我来说太复杂了,而不是那么重要(Adobe LiveCycle中的对话) - 我只是想知道我所问的是一般的可能性,如果可能的话。

1 个答案:

答案 0 :(得分:1)

我更喜欢这种语法:

var arrayPl = [];

function myFunction() {
  var carNames = ["Volvo", "Nissan"];

  carNames.forEach( function(element, i) {
    arrayPl[i] = function() {
      alert(carNames[i]);
    }
  })
}

myFunction();
arrayPl[0]();