我知道如何检查是否存在全局上下文的属性。
的任何变化if (typeof myFunction != 'undefined'){...}
但如果我不知道该功能的名称怎么办?我认为全球范围内我可以做到这一点
if (typeof this['myFunction'] != 'undefined'){...}
但我不知道如何在像这样的函数中做到这一点
function load(functionName){
if (typeof GLOBALCONTEX[functionName] != 'undefined'){
GLOBALCONTEX[functionName](arg1 , arg2 , ...);
}
}
我不想使用try / catch,因为我听说它很慢。
答案 0 :(得分:8)
如果使用浏览器,请将GLOBALCONTEX
替换为window
。例如:
function load(functionName){
if (typeof window[functionName] != 'undefined'){
window[functionName](arg1 , arg2 , ...);
}
}
答案 1 :(得分:0)
在浏览器中,全局对象为window
[docs]。如果您使用其他JavaScript执行环境(如Node.js),请查看其文档以找出全局对象的名称/引用。
当然,这样的测试仅适用于在全局范围内定义的函数,而不适用于任何更高的范围。因此,可能是这样的功能可用(并且可访问),但它不在全球范围内。
答案 2 :(得分:0)
Globalcontext是窗口。所有对象都附加到它上面。
function load(functionName){
if (typeof window[functionName] != 'undefined'){
window[functionName](arg1 , arg2 , ...);
}
}