【问题标题】:Javascript calling functions in array by window[string]通过窗口[字符串] 调用数组中的 Javascript 函数
【发布时间】:2014-08-28 07:44:23
【问题描述】:
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']"]

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

已编辑:“带有函数数组。”到“以函数为对象”。

【问题讨论】:

  • 那不是数组。那是一个对象。

标签: javascript function window


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多