先來看代碼:
. 代碼如下:
(function (window, undefined) {
//構建jQuery對象
var document = window.document,
navigator = window.navigator,
location = window.location;
var jQuery = (function () {
var jQuery = function (selector, context) {
return new jQuery.fn.init(selector, context, rootjQuery);
},
_jQuery = window.jQuery;
//............................
//............................
return jQuery; //981行
})();
//工具方法:Utilities;我在jQuery源碼中沒有發現是哪一塊,如果有發現的.可以告訴我一下
//回調函數列表 Callbacks
//異步隊列 Deferred
//浏覽器功能測試 Support
//數據緩存 Cache
//屬性操作 Attributes
//隊列 Queue
//事件系統 Event
//選擇器 Sizzle
//Dom遍歷 Traversing
//Dom操作 Manipulation
//樣式操作 CSS
//異步請求 Ajax
//動畫 Effects
//坐標 Offset. 尺寸Dimensions
window.jQuery = window.$ = jQuery;
})(window);
1.這個就是jQuery源碼的結構了.個人覺得還是相當的清晰和有條理的.
2.jQuery的整個最外層就是一個自調用的匿名函數,這樣就可以創建一個閉包.該閉包中的各種變量,函數就不會和閉包外的變量和函數發生影響,確保了jQuery的獨立性,安全性.
3最後一句代碼:window.jQuery = window.$ = jQuery;則是定義了一個全局變量jQuery和$.並且吧私有變量jQuery的引用賦給了這個全局變量.
4.將最大的對象window當做實參傳遞到函數中,使得window變成了局部變量,可以大大的縮短查找window的查找時間,同樣節省資源.
5,第二個參數undefined,是一個形參,在實際執行的時候,沒有獲得參數賦值,那麼系統就會給他自動賦值成undefined.這樣在jQuery的閉包中確保了undefined值的真時性,因為undefined在jQuery的外面有可能被篡改掉.盡管這個篡改的結果,各種浏覽器不一樣.