2012-01-03 2 views
2

오브젝트 생성시 다양한 패턴을 보았지만 일부 Firefox 프레임 워크 자바 스크립트로 다이빙을 할 때 이전에 보지 못했던 규칙을 사용하고 있음을 알았습니다. (겉으로보기) 클래스의 중복 중복 이름 지정

클래스를 구축 할 때, 나는 이런 짓을 한 (및 변형) 과거 : 나는 누군가가 여기 내 가정을 확인하거나 저를 정정 할 수 있습니다 바라고

function MyClass() { 
    this.myPublicFunction = function() { 
    }; 
    var myPrivateFunction = function() { 
    }; 
} 

바운드 익명 함수를. 시원한. 이것이 내가 대부분의 프레임 워크에서 본 것입니다.

그러나 모질라이 않는 것처럼 보일 :

function MyClass() { 
    this.myPublicFunction = function MYCLASS_myPublicFunction() { 
    }; 
    var myPrivateFunction = function MYCLASS_myPrivateFunction() { 
    }; 
} 

내 가정은 후자의 규칙을 사용하여, JS의 JIT는 기능을 컴파일하지만 그들은 것으로 처음 두를 선택하지 않을 것입니다 해석 시간보다는 런타임에 정의됩니다.

이 가정이 맞습니까? 그렇다면 다른 JS 엔진 또는 Spidermonkey에도 적용됩니까? NFE를 사용하는

+0

가독성을 위해 완료 됨 – Raynos

+0

정말요? 그게 * 그것입니까? 나는 그것이 사실이라면 조금 실망한다. 혼란을 가중시켜 가독성을 향상 시켰습니까? ;) –

+1

당신의 이론에 관해서는, ** J ** IT 컴파일러는 함수가 정의 된 방식을 저 지르지 않아야합니다. 내 (제한적이지만 평균 이상) JIT 컴파일러에 대한 지식은 그러한 제한에 대한 기술적 이유가 없음을 시사합니다. – delnan

답변

2

이유 :

  • 이름의 기능은
  • NFE 자기 문서화되어 당신의 스택 추적에서 더 많은 디버깅 정보를 제공합니다. (유용한 정보를 이름에 넣으면).

함수 선언은 NFE보다 좋습니다. (개인 스타일 선택에서)

function MyClass() { 
    this.myPublicFunction = myPublicFunction; 

    function myPrivateFunction() { 

    } 

    function myPublicFunction() { 

    } 
} 

"private"라는 단어는 잘못된 것입니다.