可能重复:
How to execute a JavaScript function when I have its name as a string
我有这个功能
function myfunc() {
alert('it worked!');
}
这个变量是一个字符串
var callback = 'myfunc';
如何从该字符串触发函数?
答案 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)
如果这是在浏览器上运行的代码,则myfun
是window
对象的方法。您可以像这样调用方法:
window[callback]();
答案 3 :(得分:1)
试试这个:
window[callback]();
不要试图永远使用eval()
,永远不要!
答案 4 :(得分:1)
如果它是一个全局函数,你可以调用为
window[callback]();
如果没有,您可能需要对其进行评估。
eval(callback + '();');
答案 5 :(得分:0)
您应该传递函数而不是带有名称的字符串。然后你可以通过callback()