jquery源碼版本2.0.3,下載地址:http://www.jq22.com/jquery/jquery-2.0.3.zip
這篇jquery源碼學習是作爲秒味課堂的jQuery源碼分析的學習筆記。
什麼是閉包?
閉包是建立一個獨立的作用域,並讓外部能夠訪問函數內部變量和對象的方法。
閉包的作用
閉包可以創建一個不被外部干擾的封閉的作用域,保證全局作用域不被污染,並且可以定義私有、公有的變量和方法函數。
閉包中被調用的變量其生命週期保存到該閉包的生命週期被結束爲止。
閉包示例
僞代碼:
//創建一個閉包,外部無法直接訪問內部變量和方法函數。
var count = (function(){
var number = 0;
//指定外部可以訪問的方法函數
return function(){
//被調用的變量不會被內存回收銷燬,生命週期和閉包生命週期一致
return number++;
}
})();
count();//1
count();//2
count();//3
jquery的閉包
//因爲js是基於原型的語言,所以在傳參中直接傳入window對象可以減少js在原型鏈中查找window對象的時間
//在js中undefined既不是保留字也不是關鍵字,所以爲了防止外部定義了個名字叫undefined的變量干擾到jquery的代碼,所以jquery將undefined作爲傳參傳入。
(function( window, undefined ) {
function jQuery(){
}
//其他代碼片段
if ( typeof window === "object" && typeof window.document === "object" ) {
//將jQuery實例化方法掛載到window對象下面,那麼就可以在外部訪問到jQuery對象了
window.jQuery = window.$ = jQuery;
}
})(window);
console.log(window.jQuery);
console.log(window.$);
console.log($);
以上三種方式都可以調用到jQuery方法