Как создать функцию с параметрами на основе массива - PullRequest
1 голос
/ 27 октября 2011

У меня есть массив с симболизирующими параметрами функции.

Например:

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

, и эта информация создается другой конечной точкой, которая возвращает этот массив.и из этого массива я хотел бы создать такую ​​функцию:

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

Итак, как вы можете видеть, я хотел бы автоматически создавать функции и использовать каждый элемент массива в качестве аргумента этой функции.

Есть ли способ достичь этого без использования eval?

Кажется, new Function('name', 'age', 'email', 'fn body') также нельзя сгенерировать на лету.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 27 октября 2011
var a = Function.apply( {}, ["name", "age", "email", "return email;"] );

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

a(1,2,3);

//3

Это не имеет конкретных преимуществ по сравнению с eval, хотя и то, что вы пытаетесь сделать, возможно, может быть сделано иначе, без необходимости оценивать строки в коде на лету

0 голосов
/ 27 октября 2011

Если вы хотите вызвать функцию с массивом параметров, используйте apply. Например:

function foo(a, b, c) {
    alert(a + b + c);
}
foo.apply(null, [1, 2, 3]);
0 голосов
/ 27 октября 2011

Вы можете использовать .apply(). Убедитесь, что тело функции является последним членом массива.

Function.apply( null, your_array );
...