[英]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.