20170621 jQuery總體結構分析

2021-09-16 20:18:55 字數 1728 閱讀 7830

1    (function(window, undefined),

7

8 jquery.fn = jquery.prototype = ,

11 // 一些原型屬性和方法

12 };

13 jquery.fn.init.prototype = jquery.fn;

14 jquery.extend = jquery.fn.textend = function() ;

15 jquery.extend();

18

19 return jquery;

20 })();

21

22 window.jquery = window.$ = jquery;

23 })(window)

通常我們建立乙個物件或例項的方式是在運算子new後緊跟乙個建構函式,但是如果建構函式有返回值,運算子new所建立的物件就會被丟棄,返回值將作為new表示式的值。

jquery利用了這一特性,通過在建構函式jquery內部用運算子new建立並返回另乙個建構函式的例項,因此當我們建立jquery物件的時候,可以使用new jquery(selector)的形式,也可以省略運算子,直接通過jquery(selector)的形式得到jquery物件。

在**的第8行,我們可以看到jquery的原型中包含init方法,該方法是建立jquery物件時真正呼叫的方法。在**的第13行,將init方法的原型物件重寫為jquery的原型物件,因此由init建立出來的物件能夠訪問jquery原型物件上的屬性和方法

jquery.fn是jquery.prototype的簡寫,可以少些7個字母,方便拼寫

jquery.extend = jquery.fn.extend = function([deep,] target, object1 [,objectn])
jquery.extendjquery.fn.textend方法用於合併兩個或多個物件的屬性到第乙個物件,其中,引數deep是可選的布林值,表示是否進行深度合併(即遞迴合併),合併行為預設是不遞迴的。引數target是目標物件,引數object1和objectn是源物件;如果僅提供了乙個物件,則意味著引數target被忽略,此時jquery或jquery.fn被當做目標物件。通過這種方式可以在jquery或jquery.fn上新增新的屬性和方法,jquery的其他模組大都是這麼實現的。

jquery.fn和jquery上的方法是不同的,jquery.fn上的方法指的是jquery原型物件中定義的方法,jquery上的方法指的是jquery作為乙個function型別的物件,它的方法屬性。

例如呼叫$(document).ready(.....)時,ready是定義在jquery.fn上的方法

例如呼叫jquery.ajax(...)時,ajax是定義在jquery上的方法

在一些方法中,在最後會返回處理的結果,如果這個結果是jquery物件,就可以在呼叫該方法時,在該方法的後面直接呼叫其他jquery相關的方法,實現鏈式呼叫。

JQuery的deferred物件學習總結

什麼是deferred?可以幫助我們按規定的順序執行函式,比如說我們ajax請求資料之後,對dom進行資料填充,那我們就要先執行完ajax,拿到資料之後才能進行dom資料填充,所以這就是乙個順序執行的過程,傳統的做法是事先定義好 函式,當檢測到資料請求完成時,執行事先定義的 函式。但是,在 函式方面...

Jquery統計表單檔案總大小

所有的 總是有壽命的,尤其是前端 獲取檔案的總大小 submit click function if actualsize 1024 1024 size else 簡單解釋一下 獲取檔案總大小的大體思路是這樣的 在提交表單前,先遍歷file控制項,獲取每個file控制項的引用,使用 this 0 f...

jquery獲取元素各種寬高及頁面寬高總結

window.onload function 獲取瀏覽器顯示區域 可視區域 的高度 window height 獲取瀏覽器顯示區域 可視區域 的寬度 window width 獲取頁面的文件高度 document height 獲取頁面的文件寬度 document width 瀏覽器當前視窗文件bo...