Jquery源碼學習

jquery的總體結構

(function(widow,undefined){jquery

    var jquery = (function(){windows

        var jquery = function(selector,.contex){瀏覽器

                return new jquery.fin.init(selector,.contex,rootJquery);緩存

        }閉包

        return jquery;異步

   })()函數

     // 工具方法 Utilities
     // 回調函數列表 Callbacks Object
    // 異步隊列 Deferred Object
    // 瀏覽器功能測試 Support
    // 數據緩存 Data
    // 隊列 Queue
    // 屬性操做 Attributes
    // 事件系統 Events
    // 選擇器 Sizzle
    // DOM 遍歷 Traversing
    // DOM 操做 Manipulation
    // 樣式操做 CSS(計算樣式、內聯樣式)
    // 異步請求 Ajax
    // 動畫 Effects
    // 座標 Offset、尺寸 Dimension工具

  window.jQuery = window.$ = jQuery;測試

})(windows)動畫

 

這就是jquery總體的結構;

 

一、總體採用了閉包結構,防止污染了全局空間,防止其餘的第三方跟本身的命名變量衝突

二、閉包中把window,undefined做爲自變量傳入閉包內部,能夠在js的做用域鏈回到頂層,節省時間

js的每一個函數執行過程都會有個與之對應的執行環境,並且,執行環境都是層層嵌套,每一個函數內部的變量都會綁定到對應的執行環境之上以下圖

 

所以若是jquery環境中的要想訪問windows對象的變量必須回溯到頂層執行變量再去查找,因此把window做爲內部變量

如var document = window.document;

 

傳入undefined的做爲局部變量也是爲了減小回溯時間同windows同樣;

相關文章
相關標籤/搜索