2011-10-27 107 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]); 
相關問題