javascript - 如何执行名称为字符串的 JavaScript 函数

标签 javascript

如何调用以下内容?

var ccall="search.clearMultiSelect";

我尝试了以下方法:

  1. window[ccall]();
  2. ccall();

两者都不起作用(我明白为什么)。我能够通过 eval 实现它,但是有没有其他不使用 eval 的方法?

我不能拆分字符串或操作字符串,除了在开头或结尾添加一些东西。

基本上,服务器在其响应中包含操作成功时要执行的函数的名称,在本例中如上所示。

最佳答案

window[ccall]() 不会工作,因为 window 不包含名为“search.clearMultiSelect”的函数。如果您可以使用拆分,请尝试类似的操作:

window[ccall.split('.')[0]][ccall.split('.')[1]]();

对于深度大于 2 的函数,可以遍历 split('.') 数组:

var f = window;
var ccallArray = ccall.split('.');
for (var i = 0; i < ccallArray.length; i++){
    f = f[ccallArray[i]];
}
f();

DEMO

关于javascript - 如何执行名称为字符串的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254575/

相关文章:

javascript - 使用主干附加地理定位

javascript - getElementById 和 Document.write 的替代方法

javascript - 如果它为空,如何防止提交 HTML 表单的输入字段值

javascript - Uncaught Error : [$injector:modulerr] In Firebase Authentication

javascript - CSS 和 JQUERY 问题

javascript - 需要Javascript正则表达式请求参数解析的解释

javascript - react 错误。 this.state.time.toLocaleTimeString 不是一个函数

javascript - 如何从包含多个 URL 的字符串中正确隔离和存储 Google 文件 ID?

javascript - 使用 Jquery 输出 XML 代码

javascript - javascript d3 和 dc 的概率密度函数