2012-04-24 10 views
2

이 jQuery를 이상한 패턴 :jQuery를 변수 그림자

var jQuery = (function() { 

// Define a local copy of jQuery 
var jQuery = function(selector, context) { 
... 
return jQuery; 

})(); 

이에 대한 실제적인 이유는 무엇입니까? 왜 내부 jQuery 함수를 노출하지 않는가? 내부 jQuery와 외부 jQuery에서 이름 충돌은 둘 다 닫혀 있기 때문에 가능합니까?

+1

다른 모든 [함수] (https://github.com/jquery/jquery/blob/master/src/core.js#L942)와'jQuery'를 정의하는 데 필요한 변수를 캡슐화 할 수 있습니다. 사용자가 이해하지 못함 – zerkms

답변

5

jQuery.noConflict(true)은 jQuery의 전역 이름을 제거합니다. 그러나 객체의 일부 이름을 사용하지 않고 나머지 jQuery 라이브러리를 프로그래밍하는 것은 불가능하므로 로컬이 아닌 노출 된 이름을 사용해야합니다. 편의상 익명 함수의 범위에서 jQuery을 변수로 다시 정의합니다.

0

패턴 자체를 모듈 패턴이라고합니다. 그것은 jQuery와 관련이 없으며 이상하지는 않지만 매우 유용합니다. 객체 상태 및 구현을 숨길 수 있습니다. 또한 사기성 방법 (개인 데이터에 액세스 할 수있는 공개 방법) 및 기타 좋은 설계 원칙을 허용합니다.

+0

이것이 모듈 패턴이라는 것을 이해합니다. 그러나 익명의 함수 인 외부 jQuery를 노출하는 것이 왜 쉬운 지 이해할 수 없습니다. – Marii