簡體   English   中英

Javascript 在調用之前查找函數/類是否存在

[英]Javascript Finding if Function/Class exists before calling it

我知道如何檢查全局上下文的屬性是否存在。 的任何變化

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

但是如果我不知道 function 的名稱怎么辦? 我認為在全球范圍內我可以做到這一點

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

但我不知道如何在這樣的 function 中做到這一點

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

而且我不想使用 try/catch,因為我聽說它很慢。

如果使用瀏覽器,請將GLOBALCONTEX替換為window 例子:

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

在瀏覽器中,全局 object 是window [docs] 如果您使用另一個 JavaScript 執行環境(如 Node.js),請查看其文檔以找出全局 object 的名稱/引用。

當然,這樣的測試僅適用於全局 scope 中定義的功能,而不適用於任何更高版本的 scope。 因此,可能是這樣的 function 可用(並且可訪問),但它不在全局 scope 中。

全局上下文是 window。 所有對象都附在它上面。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM