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']"]
他们不工作!我怎样才能做到这一点? 谢谢!
编辑:“带有一系列功能。” “以功能为目标。”
答案 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
。