jQuery總體架構的理解

來源:互聯網
上載者:User

jQuery指令碼總體結構來說,有如下形式:

(function( window, undefined ) {// Define a local copy of jQueryvar jQuery = function( selector, context ) {        // The jQuery object is actually just the init constructor 'enhanced'        return new jQuery.fn.init( selector, context );    },   // Expose jQuery to the global objectwindow.jQuery = window.$ = jQuery;})(window);

對這樣的結構不很理解,也沒做深究,只知道和和所謂的

Technorati 標籤: JQuery,Javascript,Web前端

js閉包的概念相關,今天查了一些資料,有了些基本的理解。

實際是定義了一個全域函數,前一個括弧為一個匿名函數,後面為函數的調用。可以這樣理解:

var fun=function(window, undefined){... ...}fun(window);

如http://streamlet77.javaeye.com/blog/914305的解釋可以比較好的說明:

整個指令碼是一個匿名函數(暫時叫它mainFn吧),函數被載入的時候便開始執行,mainFn可以接收兩個參數,執行時只傳遞一個參數window.

   1. 具體解釋下這個寫法的意思:
   2.   window     函數執行時會傳入window,這個傳入的window是全域對象(通常為Window)的
   3.              一個屬性且window=this,而傳入mainFn函數中作為其參數時,它會被儲存在
   4.              mainFn的調用對象中.在原型鏈中尋找變數的策略是(非嵌套函數):先尋找調用
   5.              對象,再尋找全域對象,所以這使得整個mainFn中使用的window時尋找效率更高
   6.   undefined  由於執行時並未傳遞第二個參數,故變數undefined的值為undefined.早期版
   7.              本的瀏覽器中全域對象可能沒有undefined屬性,所以不能直接使用它.通常避免
   8.              這個問題的寫法是 window.undefined = window.undefined 

 

然後在最後讓jQuery庫中最重要的對象jQuery成為了window對象的一個屬性,並可以簡寫為“$”。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.