1

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

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

我需要将行为的类型从“字符串”更改为“函数”,以便可以 .call() 它。我应该这样结束:

act = function () { alert() };

如何才能做到这一点?

4

4 回答 4

3

这是使用 eval 不仅有效而且正确的少数情况之一:

var act = eval(function_string);

但是,我应该注意,在字符串中包含一堆函数是糟糕设计的标志。不过,如果你必须这样做,那么 eval 就是这样做的方法。

于 2012-12-21T02:24:04.120 回答
2

尝试这个:

var act = 'alert(5);';

act = new Function( act );
于 2012-12-21T02:25:22.233 回答
1

我猜你必须用eval来做。但是很多人认为它是邪恶的(请确保您从安全的来源获取字符串。)

var act= "function () { alert() }";
eval ('act = '+ act)
于 2012-12-21T02:23:39.330 回答
1

您可以使用eval,尽管如果字符串来源未知,则认为它特别不安全。你不能真正将你拥有的东西分配给任何变量。eval参数必须是表达式语句。你可以做这样的事情。

eval("var act = function () { alert('hey') }");    
act();​
于 2012-12-21T02:22:28.800 回答