Javascript 通过 window[string] 调用数组中的函数

标签 javascript function window

function foobar(){
    alert("Hello World");
}


var funcName = "foobar";
var func = window[funcName];
if (typeof func === "function" ) func();

你好!我想调用上面的函数

var functions = {
    function1 : function(){ return },
    function2 : function(){ return },
    function3 : function(){ return },
    function4 : function(){ return }
}

使用函数对象。

我已经尝试过

window["functions.function1"] // or
window["functions['function1']"]

而且它们不起作用!我怎样才能实现这个目标? 谢谢!

编辑:“使用函数数组。”到“使用函数的对象。”

最佳答案

坚持使用字符串的概念,它将是:

window["functions"]["function1"]();

如果您想要一个字符串,您可以使用 split 并遍历各个部分:

var name = "functions.function1";
callFunction(name);

function callFunction(name) {
    var parts = name.split(".");
    var n;
    var obj = window;
    for (n = 0; n < parts.length; ++n) {
         obj = obj[parts[n]];
         if (!obj) {
             return;
         }
    }
    return obj ? obj() : undefined;
}
<小时/>

旁注:window 的所有属性都是全局变量。全局命名空间极其拥挤,因此添加更多全局变量是一个坏主意(tm)。相反,请将您的代码包装在作用域函数中并使用您自己的对象而不是窗口

关于Javascript 通过 window[string] 调用数组中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543382/

相关文章:

javascript - Clipper.js 不适用于坐标集

javascript - 我的图像幻灯片放映代码有什么问题?

javascript - 在QML中解析属性和函数 "overrides"

qt - 我可以使用opengl在窗口上画一些不属于我的东西吗?

c# - 仅在调整大小结束时调整 winform 窗口的大小

c++ - 如何在 Qt 中使用自定义标题栏 move 窗口

javascript - 列出 SharePoint 中关注的组和网站?

javascript - Sage Pay 立即购买按钮 - 基于表单的集成 - 使用 HTML 和 Javascript

arrays - TypeScript 函数数组

sql - 如何创建 cron 作业来运行 postgresQL 函数?