如何从字符串触发函数?

可能重复:
当我将其名称作为字符串时如何执行JavaScript函数

我有这个功能

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

和这个变量是一个字符串

var callback = 'myfunc';

我如何触发该字符串的功能?


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

全局声明的函数存储在window对象中,因此您可以使用window.myfunc引用myfunc 。 与JavaScript对象的其他属性一样,由于您的callback变量中包含字符串"myfunc" ,因此您可以使用大括号语法而不是点符号,因为它可能是window["myfunc"] ,您可以直接使用它。 一旦你有了参考,你可以把它作为一个函数给出window[callback]()


如果你在浏览器中这样做,试试这个: window[callback]()

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

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

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

这在很多情况下都可以工作,但是当然,有时候你只需要把它作为一个字符串来传递。


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

window[callback]();
链接地址: http://www.djcxy.com/p/94831.html

上一篇: How do I trigger a function from a string?

下一篇: Throw Exception containing variable name