如何从字符串中触发函数?

时间:2012-02-09 10:37:51

标签: javascript

  

可能重复:
  How to execute a JavaScript function when I have its name as a string

我有这个功能

function myfunc() {
  alert('it worked!');
}

这个变量是一个字符串

var callback = 'myfunc';

如何从该字符串触发函数?

6 个答案:

答案 0 :(得分:2)

假设该函数是全局声明的,它将包含在window对象中,因此您可以使用window[callback]()调用它。

全球声明的函数存储在window对象中,因此您可以使用myfunc引用window.myfunc。与JavaScript对象上的其他属性一样,您可以使用大括号语法而不是window["myfunc"]的点表示法,因为您的"myfunc"变量中包含字符串callback,您只需使用该字符代替。获得引用后,将其称为函数,该函数提供window[callback]()

答案 1 :(得分:2)

如果您在浏览器中执行此操作,请尝试以下操作:window[callback]()

也可以使用eval - 类似eval(callback + '()') - 但非常效率低,不推荐。

此外,您可能需要考虑将函数本身而不是其名称分配给回调变量:

function myfunc() {...}
var callback = myfunc
...
callback()  # trigger callback

这在许多情况下会起作用,但当然,有时你只需要将它作为字符串传递。

答案 2 :(得分:1)

如果这是在浏览器上运行的代码,则myfunwindow对象的方法。您可以像这样调用方法:

window[callback]();

答案 3 :(得分:1)

试试这个:

window[callback]();

不要试图永远使用eval(),永远不要!

答案 4 :(得分:1)

如果它是一个全局函数,你可以调用为

window[callback]();

如果没有,您可能需要对其进行评估。

eval(callback + '();');

答案 5 :(得分:0)

您应该传递函数而不是带有名称的字符串。然后你可以通过callback()

来调用它