欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解jQuery()方法的構(gòu)建原理

 更新時間:2016年12月05日 11:45:08   作者:kidney  
對于JQuery,想必大家都很熟悉。目前,很多web項目,在實施的過程中,考慮到各瀏覽器原生JS API的兼容性,大都會選用JQuery或類似于JQuery這樣的框架來進行網(wǎng)頁效果開發(fā)。這篇文章將給大家深入介紹jQuery()方法的構(gòu)建原理,有需要的朋友們可以參考借鑒。

前言

雖然JQuery相對簡單,但要全面掌握,且快速靈活的使用它也并不那么容易,它提供了很多方法,包含了網(wǎng)頁開發(fā)的各個知識面,所以要全面掌握這些知識點,個人認為還是需要對jquery有深入的理解,對這些知識點做分類整理記憶,這樣你才能面對一些JQuery代碼的時候不會感到迷惑,才會知道采用何種方式實現(xiàn)某個特效是最佳實踐,才能快速的采用JQuery來進行項目開發(fā)。

jQuery中最常用方法的就是jQuery( ) ,也即$( ) 。

jQuery( )是一個函數(shù)調(diào)用,調(diào)用的結(jié)果是返回了一個jQuery實例對象。

編寫組件通常的做法是將組件封裝成一個對象,需要用的時候則通過new運算符來創(chuàng)建一個實例。但是jQuery( )無須我們用new手工實例化,它會自動返回一個實例。

要實現(xiàn)這一點,最直接的思路就是定義這樣一個函數(shù):

這么做的問題是出現(xiàn)了死循環(huán):

最簡單的解決辦法是借助另一個構(gòu)造函數(shù):

這么做技術上并沒有什么問題,但是jQuery的作者并沒有這么做,可能是出于某種技術潔癖或者我暫時不清楚的原因,init被定義在了jQuery函數(shù)的原型中:

通過init作為中轉(zhuǎn)站,最終return出了一個jQuery實例??瓷先ジ把胖隆保小凹夹g范”。

將上述代碼寫在一個自執(zhí)行函數(shù)內(nèi)(形成私有作用域,避免命名空間污染),就構(gòu)成了jQuery的核心框架(簡化版):

要理解上述結(jié)構(gòu)的工作原理,必須理解JavaScript基于構(gòu)造函數(shù)和原型的繼承模式。

當函數(shù)調(diào)用表達式前出現(xiàn)了關鍵字new,這個函數(shù)就成了構(gòu)造函數(shù),此時會依次發(fā)生四件事:

     1、首先一個空對象(又稱實例)被創(chuàng)建出來了。

     2、該空對象繼承構(gòu)造函數(shù)的原型中的屬性和方法。這也是為什么要把方法都寫在構(gòu)造函數(shù)的prototype里。

     3、該空對象被賦值給構(gòu)造函數(shù)內(nèi)部的this對象。

     4、執(zhí)行構(gòu)造函數(shù)。如果構(gòu)造函數(shù)中顯式的返回了一個對象,那么new出的就不再是新創(chuàng)建的空對象,而是return指定的對象。否則一律返回新建空對象。

具體參見阮一峰教程:http://javascript.ruanyifeng.com/oop/basic.html

于是jQuery( )的構(gòu)造原理就很清晰了:每次調(diào)用jQuery( )都返回由構(gòu)造函數(shù)init指定返回的this對象,而this對象已經(jīng)被賦值為那個新創(chuàng)建的空對象。由于把jQuery.prototype都賦給了init.prototype,所以新創(chuàng)建的空對象繼承所有jQuery的方法。

構(gòu)造函數(shù)init里面的return this其實刪掉也無妨,至于作者為啥要加這句,呃,可能是因為知道的太多。

總結(jié)

以上就是jQuery()方法構(gòu)建原理的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • JavaScript實現(xiàn)瀑布動畫

    JavaScript實現(xiàn)瀑布動畫

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)瀑布動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 關于js二維數(shù)組和多維數(shù)組的定義聲明(詳解)

    關于js二維數(shù)組和多維數(shù)組的定義聲明(詳解)

    下面小編就為大家?guī)硪黄P于js二維數(shù)組和多維數(shù)組的定義聲明(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • javascript Array 數(shù)組常用方法

    javascript Array 數(shù)組常用方法

    這篇文章主要介紹了javascript Array 數(shù)組常用方法 ,需要的朋友可以參考下
    2015-04-04
  • 深入理解JavaScript單體內(nèi)置對象

    深入理解JavaScript單體內(nèi)置對象

    下面小編就為大家?guī)硪黄狫avaScript單體內(nèi)置對象。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點

    Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點

    這篇文章主要介紹了Easyui Tree獲取當前選擇節(jié)點的所有頂級父節(jié)點,以及easyUI Tree顯示選中節(jié)點的所有父節(jié)點的實現(xiàn)代碼,需要的朋友可以參考下
    2017-02-02
  • js獲取字符串最后一位方法匯總

    js獲取字符串最后一位方法匯總

    文章匯總了4種js獲取字符串最后一位字符的方法,并附上示例說明,非常簡單實用,這里推薦給大家
    2014-11-11
  • JavaScript全排列的六種算法 具體實現(xiàn)

    JavaScript全排列的六種算法 具體實現(xiàn)

    這篇文章介紹了全排列的六種算法有,交換算法,鏈接算法,回溯算法等,有需要的朋友可以參考一下
    2013-06-06
  • Object.defineProperty()函數(shù)之屬性描述對象

    Object.defineProperty()函數(shù)之屬性描述對象

    這篇文章主要介紹了Object.defineProperty()函數(shù)之屬性描述對象,JavaScript?提供了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),用來描述對象的屬性,控制它的行為,比如該屬性是否可寫、可遍歷等等。這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)稱為:屬性描述對象
    2022-09-09
  • 第十篇BootStrap輪播插件使用詳解

    第十篇BootStrap輪播插件使用詳解

    Bootstrap 輪播插件是一種靈活的響應式的向站點添加滑塊的方式。本文給大家介紹BootStrap輪播插件使用詳解,非常不錯具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-06-06
  • JavaScript實現(xiàn)網(wǎng)頁頭部進度條刷新

    JavaScript實現(xiàn)網(wǎng)頁頭部進度條刷新

    這篇文章主要介紹了JavaScript實現(xiàn)網(wǎng)頁頭部進度條刷新實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04

最新評論