2012-12-28 3 views
3

js를 사용하여 즐긴다. 이제 나는 단지 좌절했습니다. 내 상사가 구입 한 많은 양의 코드를 jsDoc에 보내려고합니다. 저자는 API를 제공하지 않았으므로 jsDoc을 사용하여 API를 만들 계획입니다.이것은 ordinay 함수, 생성자 또는 둘 다입니까?

불행히도 코드가 명확하지 않고 하나의 js 파일에 약 10k 줄의 코드가 들어 있습니다. 나는 과거에 객체 리터럴을 사용했다. 이것은 객체 리터럴이 아니다. 매개 변수와 함수는 쉼표로 구분되지 않습니다. 또한 프로토 타입은 사용되지 않지만 새로운 연산자는 사용됩니다. 나는 여러 책을 보았고 네임 스페이스는 가장 가까운 '스타일'로 보인다. 다음은 프로그램의 일반적인 흐름입니다. 나의 질문은 그 예를 따른다.

(function() { 
var global = (function() {return this; }).call(); 
global.X = {}; 
})(); 

X.init = function(){ 
    X.MyObjectA = new X.FooA(); 
    X.MyObjectB = new X.FooB(); 
} 

X.FooA = function() { 
    var storeStuff; 
    do stuff 
    . 
    . 
    function bar(){ 
     var storeSomething; 
     do something 
     do somthing else 
     . 
     . 
     moreFunctions(){} 
     var moreVars; 
     . 
     . 

    } 

    this.anOccasionalFunctionLiteral = function(){} 
     . 
     . 
} 

X.FooB = function(){ 
    Similar contents of FooB() 
} 
. 
. 
. 
Continues forever... 

그래서 제 질문은 다음과 같습니다

  1. 이 무엇 스타일입니다!? 내가 스타일을 말할 때 나는 FooA와 FooB가 실제로 무엇인지 의미하는 것 같아요? 그들은 대상입니까? 수업?

  2. X.FooA 또는 X.FooB의 멤버가 아닌 경우 중첩 된 함수에 어떤 제목을 부여해야합니까? bar()를 포함하여 중첩 된 함수가 개체 인 FooA 및 FooB의 메서드가 아닙니다.

  3. 개체의 내부에 중첩 된 함수 인이 실제로 주변 개체의 메서드가 아닌 경우 어디에서든지 호출 할 수 있습니까? 아니면 일반적인 범위 규칙이 적용됩니까?

내가으로 fooA 및으로 fooB의 방법으로, 바 (같은 생성자와 생성자의 내부에 방법 등으로 fooA 및으로 fooB에 유사한 개체를) 분류 된 삶을 더 읽기 쉽고 행복하게합니다. 이것은 정확하지 않을 수도 있지만 적어도 구성되어 있습니다. 어떤 제안?

도움 주셔서 감사합니다.

답변