2011-10-27 65 views
1

我有一个函数参数的simbolize数组。如何使用基于数组的参数创建函数

例如:

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

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

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

因此,大家可以看到,我想自动创建功能,并使用每个数组元素作为参数传递给该函数。

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

看来new Function('name', 'age', 'email', 'fn body')不能在飞行中产生。

在此先感谢

+1

你想做什么没有任何意义。使用命名参数“创建”函数没有意义。这里真正的问题是什么? –

+0

你真的需要这样做吗?你可以期望一个数组或对象作为参数,并从那里得到你需要的。 –

回答

1
var a = Function.apply({}, ["name", "age", "email", "return email;"]); 

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

a(1,2,3); 

//3 

这个拥有超过eval虽然和你正在尝试做也许可以做不同的东西还没有具体的好处,而无需对飞

0

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

Function.apply(null, your_array); 
0

评估字符串转换成代码如果你想要把一个函数与一组参数,使用apply。例如:

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