Javascript更改字符串以键入函数?

时间:2012-12-21 02:21:26

标签: javascript

我有一个存储为字符串的函数列表,例如:

var act= "function () { alert() }";

我需要将act的类型从'string'改为'function',所以我可以.call()它。我应该最终得到这个:

act = function () { alert() };

如何做到这一点?

4 个答案:

答案 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)