簡體   English   中英

如何從JavaScript文件獲取方法名稱

[英]How to get method name from JavaScript file

我有一個JavaScript文件,其中定義了許多方法。 有什么方法可以知道該文件中有多少種方法,這些方法的名稱是什么?

有沒有辦法知道Java腳本中有多少種方法,方法的名稱是什么?

閱讀源代碼或文檔(如果有)。

如果您正在尋找某種“列表可用方法”功能,那么就沒有了。 寫一個相當於寫一個javascript解析器甚至編譯器。

祝你好運。 :-)

從理論上講,您可以嘗試查找與模式匹配的所有內容:

function <name>(

您可能會錯過許多其他類型的功能。 看,函數實際上只是JavaScript中的對象。 可以分配,共享,修改和移動它們。 因此,您還必須找到以下這些:

var <name> = function() {}

還有這些:

function returnFunc() {
    return function() {...}
}
var <name> = returnFunc();

以及這些:

obj.member = new Function();

以及幾乎無限多種類似的函數定義。

因此,答案是,很有可能你做不到。 除非代碼的構造過於狹窄。

最簡潔的答案是不”。

長的答案是,如果JS文件是您的 JS文件,即您控制內容,那么可以通過多種方法來構造代碼,這些代碼將使您能夠獲得函數名稱的計數或列表。 顯然,這不會幫助您使用其他人的代碼。 道歉,如果您已經知道所有這些,但是以防萬一您不知道:將所有“庫”功能包裝為單個對象的屬性通常是一個好主意,如下所示:

var myFunctionLibrary = {
  doSomething         : function() {},
  somethingElse       : function() {},
  nonFunctionProperty : "test",
  // etc.
}

這將創建一個名為myFunctionLibrary全局變量,該全局變量是一個對象,其屬性是對函數的引用。 (注意:還有其他幾種方法可以達到類似的效果,我比這種方法更喜歡這種方法,但是出於解釋的目的,這似乎是最簡單的。)然后,您可以通過以下方式訪問函數:

myFunctionLibrary.doSomething();
// or
myFunctionLibrary["doSomething"]();

由於所有函數都包含在特定對象中,因此您可以像其他任何對象一樣遍歷它們:

var funcCount = 0;
var propCount = 0;
for (fn in myFunctionLibrary) {
  if (typeof myFunctionLibrary[fn] === "function"){
    funcCount++;
    alert("Function name: " + fn);
  } else {
    propCount++;
  }
}

alert("There are " + funcCount + " functions available, and "
      + propcount + " other properties.");

但是,主要優點是,您不必擔心函數可能與要使用的某些其他庫中的函數同名。

編寫程序以將文件加載到Rhino中,然后檢查字典並查看其中的內容。

暫無
暫無

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

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