我想用自動方式從字符串中創建JavaScript中的函數對象,但我正在用參數掙扎一點。我目前可以做的是以下幾點:使用來自數組的參數創建JavaScript函數
var objectStr = "function(x) { return x; }";
var myFunc = Function("x", "{ return x; }");
如果我做一些假設,該函數將始終以「功能(X)」開始我可以這樣做:
var objectStr = "function(x) { return x;}";
var funcBody = objectStr.replace("function(x)", "");
var myFunc = Function("x", funcBody);
這讓我接近自動方法。我也可以將字符串「x」分配給一個值,並將其作爲參數傳入。但是我真的很想去一個地方,我可以提供以下內容:
var objectStr = "function(x, y) { return x*y; }";
在這一點上我想提取出來的參數,x和y爲一個字符串數組。我確信我可以用正則表達式很明智地做到這一點。
var parameters = [ "x", "y" ];
但問題是,我現在該如何創建一個功能,有多個參數,從我的參數數組?
編輯
之所以想這樣做是爲了產生一個函數,回調。我無法控制這些參數的值。這個jQuery的例子來說明(雖然這不是我使用的庫)可能是:
// Define myFunc using approach above
// then somewhere later in 3rd party code an itterator block
// like below will call:
jQuery(data).each(function() {
myFunc(this);
}
你知道,你不必在一個函數聲明的參數,但仍可以訪問它們(然而,許多被髮送到你的函數)嗎? – 2013-03-19 13:03:56
@MarkSchultheiss:我添加了一個編輯來幫助說明我的用例。我無法控制參數的值,它們將根據第三方代碼和回調進行分配。 – Ian 2013-03-19 13:07:55