我有一个带有simbolize函数参数的数组。
例如:
var params = ['name', 'age', 'email'];
此信息由另一个返回此数组的端点创建。从这个数组我想创建一个这样的函数:
function (name, age, email) {
//...
//my custom code
return result;
}
因为你可以看到我想自动创建函数并使用每个数组元素作为该函数的参数。
有没有办法在不使用eval
的情况下实现这一目标?
似乎无法动态生成new Function('name', 'age', 'email', 'fn body')
。
提前致谢
答案 0 :(得分:1)
var a = Function.apply( {}, ["name", "age", "email", "return email;"] );
/*function anonymous(name,age,email) {
return email;
}*/
a(1,2,3);
//3
这比eval
没有具体的好处,你想要做的事情可能会有所不同,而无需动态地将字符串评估为代码
答案 1 :(得分:0)
您可以使用.apply()
。确保函数体是数组的最后一个成员。
Function.apply( null, your_array );
答案 2 :(得分:0)
如果要使用参数数组调用函数,请使用apply
。例如:
function foo(a, b, c) {
alert(a + b + c);
}
foo.apply(null, [1, 2, 3]);