【问题标题】:How to create a function with parameters based on array如何根据数组创建带参数的函数
【发布时间】:2011-10-27 14:42:26
【问题描述】:

我有一个数组,可以模拟函数的参数。

例如:

var params = ['name', 'age', 'email'];

并且此信息由返回此数组的另一个端点创建。我想从这个数组中创建一个这样的函数:

function (name, age, email) {
    //...
    //my custom code
    return result;
}

如您所见,我想自动创建函数并将每个数组元素用作该函数的参数。

有什么方法可以在不使用eval 的情况下实现这一目标?

似乎new Function('name', 'age', 'email', 'fn body') 也无法即时生成。

提前致谢

【问题讨论】:

  • 你想做的事情没有任何意义。使用命名参数“创建”函数没有意义。这里真正的问题是什么?
  • 你真的需要这样做吗?你可以只期望一个数组或对象作为参数,然后从那里得到你需要的东西。

标签: javascript function evaluation


【解决方案1】:
var a = Function.apply( {}, ["name", "age", "email", "return email;"] );

/*function anonymous(name,age,email) {
return email;
}*/

a(1,2,3);

//3

这与 eval 相比没有具体的好处,而且您尝试做的事情可能会有所不同,而无需即时将字符串评估为代码

【讨论】:

    【解决方案2】:

    您可以使用.apply()。确保函数体是数组的最后一个成员。

    Function.apply( null, your_array );
    

    【讨论】:

      【解决方案3】:

      如果要调用带有参数数组的函数,请使用apply。例如:

      function foo(a, b, c) {
          alert(a + b + c);
      }
      foo.apply(null, [1, 2, 3]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 2019-01-06
        • 2021-04-09
        • 2015-09-15
        • 1970-01-01
        相关资源
        最近更新 更多