我有包含anonymus函数定义的字符串,但我怎么称呼它。比方说,功能就像这样:如何从字符串调用匿名函数
var fn_str = "function(){ alert('called'); }";
尝试的eval,却得到了一个错误,函数必须有一个名字。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
我有包含anonymus函数定义的字符串,但我怎么称呼它。比方说,功能就像这样:如何从字符串调用匿名函数
var fn_str = "function(){ alert('called'); }";
尝试的eval,却得到了一个错误,函数必须有一个名字。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
您可以使用立即调用函数表达式:
var fn_str = "function(){ alert('called'); }";
eval('(' + fn_str +')();');
Immediately Invoked Function Expression
另一种方法是使用一个Function
对象(如果有函数体字符串):
var func = new Function("alert('called')");
func.apply(this);
已经想通了,但谢谢!接受/ + 1快速回复:) – Kristian 2012-03-09 08:30:17
找到了解决办法:把功能括号
var a = "(function(){ alert('called'); })";
eval(a).apply(this);
您可以使用函数构造函数创建字符串的函数:
var fn = new Function("arg1", "alert('called ' + arg1);");
fn.apply(this)
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
+1。虽然只有当他具有功能体字符串时才能工作...... – gdoron 2012-03-09 08:59:22
你叫'eval'用'了'而函数字符串在'fn_str'中。这不会用这种方式... – gdoron 2012-03-09 08:33:15
对不起,我用了一个在萤火虫控制台的简称,但忘了改变这一点,虽然 – Kristian 2012-03-09 08:35:20