요약:1.전체 라 이브 러 리 는 익명 함수 에 정의 되 어 전체 변수의 발생 을 차단 합 니 다.2.undefined 를 부족 한 매개 변수 로 전달 하여 undefined 변수의 오염 을 방지 합 니 다.3.$(...)가 실제로 jQuery.fn.init 대상 의 인 스 턴 스 를 되 돌려 준 다음 에 이 대상 의 prototype 을 jQuery.prototype(문장 jQuery.fn.init.prototype=jQuery.fn)을 가리 키 기 때문에 발생 하 는 인 스 턴 스 는 jQuery.prototype 의 방법 과 속성 을 공유 하고 체인 프로 그래 밍 을 실현 합 니 다.4.마지막 으로 window.jQuery=window.$=jQuery 를 통 해 jQuery 와$를 전역 변수 로 내 보 냅 니 다
(function(window, undefined) {
// Define a local copy of jQuery
var jQuery = (function() {
var jQuery = function(selector, context) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init(selector, context/*, rootjQuery*/);
};
// ...
jQuery.fn = jQuery.prototype = {
constructor : jQuery,
init : function(selector, context, rootjQuery) {
// ...
}
// ...
};
// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;
// ...
// Expose jQuery to the global object
return jQuery;
})();
// ...
window.jQuery = window.$ = jQuery;
})(window);