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);
}