次のコードを検討してください。
function foo()
{
alert(1);
}
var str = foo.toString();
var fn = Function(str);
console.log(fn2.toString());
出力は次のとおりです。
function anonymous() {
function foo()
{
alert(1);
}
}
foo 関数を取り戻して fn に保存しようとしています。しかし、ここでは foo 関数が無名関数の中にあります。eval() を試しました。ただし、グローバル スコープで foo 関数を作成します。
文字列化された形式から関数を取得するにはどうすればよいですか?
更新: 関数から引数へのマップを作成しています。関数を一意に識別するために、 toString() メソッドを使用しました。
var map[foo.toString()] = [1,2,3]; //this list is populated dynamically in my code
// Now I want to call foo with [1,2,3] as arguments. For this I need to get back foo() function
foo(1,2,3)
更新 2:
この問題を別の方法で解決しました。基本的に、(関数) --> (引数) のマップを作成したかったの
は、関連する質問へのリンクです:
stackoverflow post。