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/