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

时间:2014-08-28 07:44:23

标签: 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']"]

他们不工作!我怎样才能做到这一点? 谢谢!

编辑:“带有一系列功能。” “以功能为目标。”

1 个答案:

答案 0 :(得分:1)

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

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)。相反,将代码包装在作用域函数中并使用您自己的对象而不是window