2013-05-13 8 views
3

namespace 및 모듈러 패턴을 만드는 방법에 대해 How Good C# Habits can Encourage Bad JavaScript Habits 문서를 읽었으나 $jQuery을 사용하여 네임 스페이스를 만드는 이유를 알 수 없습니다. 이 코드를보고 :모듈 패턴의 JavaScript 네임 스페이스

(function(skillet, $, undefined) { 
    //Private Property 
    var isHot = true; 

    //Public Property 
    skillet.ingredient = "Bacon Strips"; 

    //Public Method 
    skillet.fry = function() { 
     var oliveOil; 

     addItem("\t\n Butter \n\t"); 
     addItem(oliveOil); 
     console.log("Frying " + skillet.ingredient); 
    }; 

    //Private Method 
    function addItem(item) { 
     if (item !== undefined) { 
      console.log("Adding " + $.trim(item)); 
     } 
    }  
}(window.skillet = window.skillet || {}, jQuery)); 

jQuery로 호출 다음 매개 변수로 $를 보내고있다?

+0

나는 이것이 복제본이라고 확신하지만 그 질문은 가장 명확한 것이라고 생각하지 않습니다. – Pointy

답변

3

jQuery 라이브러리를로드하면 두 개의 전역 심볼이 주 기능인 "jQuery"및 "$"에 대한 참조로 바인딩됩니다. 그러나 다른 라이브러리에서도 "$"를 사용하려고하므로 jQuery는 "$"를 바인딩 해제하고 jQuery를로드하기 이전의 라이브러리로 복원하는 방법을 제공합니다. 예제에서 기술을 사용하면 전역 "$"가 jQuery를 참조하는지 여부에 상관없이 코드에서 "$"를 사용할 수 있습니다.

편집이 참조 매우 문서는 유사를 설명 — : 통과

두 번째 인수는 jQuery를 [입니다]. 이것의 이점은 명명 된 매개 변수가 $로 참조되므로 다른 JavaScript 라이브러리에서 선언 된 $와 충돌하지 않아도 익명 함수에서 $로 jQuery를 참조 할 수 있습니다. 이는 잘 작성된 jQuery 코드를 볼 때 가장 많이 볼 수있는 일반적인 관행입니다.

+0

어리석은 질문에 대해 유감스럽게 생각하지만 jQuery를 전혀 사용하고 싶지 않으면 여전히 필요합니까? –

+0

이 접근 방식을 사용하면 내 네임 스페이스에서'$ '를 사용하면 jQuery를 호출하게됩니다. 그리고 제 모듈에서 jQuery를 사용하고 싶지 않으면 간단히 매개 변수와'jQuery'를 함께 제거 할 수 있습니까? 맞습니까? –

+0

jQuery를 사용하지 않으려는 경우이 예제는 적합하지 않습니다. 그렇다면이 트릭을 사용하면 "$"는 글로벌 jQuery에 대한 참조가 될 것입니다. 사용하지 않으려면 두 번째 매개 변수를 생략하십시오. – Pointy