创建动态函数并调用它们

时间:2013-05-24 17:48:27

标签: javascript

我正在为每个项目动态创建javascript函数,我想稍后调用它们,代码注释中的详细信息

  var i=0;
  $(this).find("Tasks").each(function (i, e) {
    i++;
    function dynamicFunction+ i(){ }
  )};
  // this will result as dynamicFunction1, dynamicFunction2, dynamicFunction3 ... so on
  //now i want to call them under antoher function
  //so my doing this
  for(var k=0;k<=i;k++)
   {
     dynamicFunction + k(); // this is not working
   }

2 个答案:

答案 0 :(得分:1)

如果必须使用单个函数,为什么不将它们保存在数组中并稍后遍历该数组:

  var funcArr = [];
  $(this).find("Tasks").each(function (i, e) {
      funcArr.push(function(){
          //some code
      });
  )};

  for(var k = 0; k < funcArr.length; k++)
  {
      funcArr[k]();
  }

答案 1 :(得分:1)

请记住,function foo() { }(大致)等同于window["foo"] = function() { }。因此,要创建那些动态命名的函数,你可以做到

var i = 0;
$(this).find("Tasks").each(function(i2, e) {
    i++;
    window["dynamicFunction" + i] = function() { }
)};

for(var k=0;k<=i;k++) {
    window["dynamicFunction" + k]();
}

虽然不是全局window,但您应该使用专用变量。