Javascript在调用之前查找函数/类是否存在

时间:2011-07-12 20:34:40

标签: javascript function exists

我知道如何检查是否存在全局上下文的属性。

的任何变化
if (typeof myFunction != 'undefined'){...}

但如果我不知道该功能的名称怎么办?我认为全球范围内我可以做到这一点

if (typeof this['myFunction'] != 'undefined'){...}

但我不知道如何在像这样的函数中做到这一点

function load(functionName){
  if (typeof GLOBALCONTEX[functionName] != 'undefined'){
    GLOBALCONTEX[functionName](arg1 , arg2 , ...);
  }
}

我不想使用try / catch,因为我听说它很慢。

3 个答案:

答案 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 , ...);
      }
    }