2011-08-03 2 views
0

많은 메소드가 정의 된 JavaScript 파일이 있습니다. 해당 파일에 얼마나 많은 메소드가 있는지 알 수있는 방법이 있습니까? & 메소드의 이름은 무엇입니까?JavaScript 파일에서 메소드 이름을 가져 오는 방법

+1

이 도움이 될 수 있습니다. http://stackoverflow.com/questions/6588977/how-to-to-extract-a-javascript-function-from-a-javascript-file – Waqas

답변

2

방법의 이름이 무엇인지 자바 스크립트 &에 얼마나 많은 방법이 있다는 것을 알 수있는 방법이 있습니까?

(있는 경우) 소스 또는 설명서를 읽으십시오.

"목록 사용법"기능을 찾고 계시다면 아무 것도 없습니다. 하나를 쓰는 것은 자바 스크립트 파서와 아마도 컴파일러를 작성하는 것과 같습니다.

행운을 빈다. :-)

2

동안 이론적으로, 당신은 패턴과 일치하는 모든 것을 찾을 시도 할 수 있습니다 :

function <name>(

당신은 기능의 다른 유형을 많이 놓치게 될 것입니다. JavaScript에서 함수는 실제로는 객체입니다. 할당, 공유, 수정 및 이동할 수 있습니다. 그래서, 당신은 또한 다음을 발견해야 할 것 :

var <name> = function() {} 

그리고 이들을 :

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

을뿐만 아니라 다음과 같이

obj.member = new Function(); 

와 유사한 기능 정의의 거의 무한한 다양성을.

그래서 답은 대부분 그렇습니다. 코드가 극도로 좁게 구성되어 있지 않으면.

2

짧은 대답은 "아니오"입니다.

긴 대답은 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."); 

주요 장점,하지만 당신은 당신의 기능을 잠재적으로 같은 이름을 가진에 대해 걱정할 필요가 없다는 것입니다 다른 라이브러리의 함수로 사용할 수 있습니다.

+0

도움을 주셔서 감사합니다. 우리는 함수 JS에서 이름을하지만 내 Java 파일에서 이러한 함수 이름을 가져오고 싶습니다. 나는 내 JS 파일을 탐색 할 수 있도록 함수 이름을 찾고 내 Java 파일에서 그들을 나열 할 수있는 몇 가지 솔루션을 원한다는 뜻. 거기에 어떤 식 으로든 그렇게 그 JS 파일, 자바와 그 함수 이름을 링크? – Eshika

+0

동일한 서명 (예 : 전역 함수 선언)을 사용하여 Java에서 액세스 할 수있는 모든 기능을 작성하면 가능합니다. 그렇지 않으면 [jsDoc] (http://code.google.com/p/jsdoc-toolkit/) 스타일 주석을 사용하지만 어느 방법도 강력하지 않습니다. – RobG

+0

@Eshika - 그런 다음 질문을 "Java 프로그램이 JS 파일을 처리하여 함수 이름을 추출하는 방법"과 같은 내용으로 업데이트 할 수 있습니다. - "Java"태그를 추가하십시오. 함수 선언 만 범위를 좁힐 수 있지만 함수 표현식이 없으면 구문 분석이 다소 쉬워 져야합니다.하지만 중첩 된 함수에 여전히 문제가있을 수 있습니다. – nnnnnn

0

Rhino에 파일을로드하고 사전을 검사하고 갖고있는 것을 확인하는 프로그램을 작성하십시오.

+0

사전을 검사하여 사용 가능한 메서드가 있는지 확인하지만 JS File에 메서드 이름을 지정할 수있는 적절한 방법을 찾지 못했습니다. 다른 생각이 있거나 잘못하고 있습니다. – Eshika

관련 문제