考虑以下代码:
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 函数位于 Anonymous 函数中。我试过 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。