我有一个存储为字符串的函数列表,例如:
var act= "function () { alert() }";
我需要将act的类型从'string'改为'function',所以我可以.call()它。我应该最终得到这个:
act = function () { alert() };
如何做到这一点?
答案 0 :(得分:3)
这是少数使用eval不仅有效但正确的情况之一:
var act = eval(function_string);
但是,我应该注意在字符串中使用一堆函数是设计糟糕的标志。不过,如果你必须那么eval就是这样做的方式。
答案 1 :(得分:2)
试试这个:
var act = 'alert(5);';
act = new Function( act );
答案 2 :(得分:1)
您可以使用eval
,但如果字符串来源未知,则认为它特别不安全。你无法真正将你拥有的内容分配给任何变量。 eval
参数必须是表达式或语句。你可以这样做。
eval("var act = function () { alert('hey') }");
act();
答案 3 :(得分:1)
我猜你必须用eval来做。但是很多人认为它是邪恶的(确保你从安全的来源获得字符串。)
var act= "function () { alert() }";
eval ('act = '+ act)