2012-03-05 1 views
0

namespace in JavaScript에 관한 다양한 방법에 관한 기사를 읽었습니다. 나는 마지막 하나의 모양을 아주 좋아하지만 JSLint는 그렇지 않다고 생각합니다. 나는 JSLint가 지나치게 열중 할 수 있다는 것을 알고 있지만,이 기술을 훌륭하게 사용할 수있는 방법이 있습니까?JSLint에서 문제가되는 JavaScript의 네임 스페이스 기술

var Something = {}; 

(function() { 
    "use strict"; 

    this.helloWorld = function() { 
     var greeting = "Hello World!"; 
    }; 

}.apply(Something)); 
+1

이 방법은 권장하지 않습니다. 코드를 읽는 사람이 누구든지 이중 취할 수있게 만드는 것은 흔하지 않은 일입니다. 불필요한 정신적 부담. 패턴 3은 적어도 적절한 모듈 시스템을 채택하지 않은 사람들 중에서 가장 많이 사용됩니다. – Domenic

+0

나는 그것이 드문 것에 대해 당신의 요지를 짐작할 것입니다. 그것은 혼란 스러울 수 있습니다. – casr

+1

주목해야 할 것은 'this'로 작업하는 것이 허리 통증이라는 것입니다. 나는 항상 그것을 사용하지 않는 모듈 정의를 선호한다. – hugomg

답변

3

대신을 시도해보십시오

var Something = {}; 

(function (something) { 
    "use strict"; 

    something.helloWorld = function() { 
     var greeting = "Hello World!"; 
    }; 

}(Something)); 
+0

비록이 기술을 알고 있지만 JSLint에 대한 원래의 질문에 대한 대답으로 생각됩니다. 답장을 보내 주셔서 감사합니다. – casr

-2

시도가 call 대신 apply을 사용합니다. apply은 정확히 두 개의 매개 변수 (두 번째 매개 변수는 배열의 배열)로 정의되고 call은 실제로 단 하나의 매개 변수 (네임 스페이스) 만 필요로하며 선택적 인수 목록을 갖습니다.

+1

이것은 거짓입니다. 두번째 인수는'apply'를 위해서도 선택적입니다. – Domenic

+0

실제로 많은 것들이 선택 사항이지만 JSLint에 대해 이야기하고 있습니다. 그것은 브라우저 해석기보다 훨씬 엄격한 동작을합니다. – RReverser

+1

JSLint에는 불필요한 인수가 필요한 것과 관련된 버그가 없습니다. 그것을 제공하기 전에 적어도 조언을 테스트해야합니다 : http://jslint.com/ – Domenic