日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jquery 源码分析初步

發布時間:2025/4/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jquery 源码分析初步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


jquery 所有版本下載和引用地址

http://www.jq22.com/jquery-info122


一 jquery源碼要點

jQuery框架的核心就是從HTML文檔中匹配元素并對其執行操作

jQuery的無new構建
JavaScript是函數式語言,函數可以實現類,類就是面向對象編程中最基本的概念

怎么訪問jQuery類原型上的屬性與方法?
? ? ?做到既能隔離作用域還能使用jQuery原型對象的作用域呢,還能在返回實例中訪問jQuery的原型對
象?
實現的關鍵點
通過原型傳遞解決問題,把jQuery的原型傳遞給jQuery.prototype.init.prototype
換句話說jQuery的原型對象覆蓋了init構造器的原型對象
因為是引用傳遞所以不需要擔心這個循環引用的性能問題

鏈式調用
DOM鏈式調用的處理:
1.節約JS代碼.
2.所返回的都是同一個對象,可以提高代碼的效率
通過簡單擴展原型方法并通過return this的形式來實現跨瀏覽器的鏈式調用。
利用JS下的簡單工廠模式,來將所有對于同一個DOM對象的操作指定同一個實例。

====
jQuery.extend和jQuery.fn.extend其實是同指向同一方法的不同引用。
====
jQuery并沒有將事件處理函數直接綁定到DOM元素上,而是通過.data存儲在緩存.data存儲在緩存.cahce
上。

?首先為DOM元素分配一個唯一ID,綁定的事件存儲在.cahce[唯一ID][.cahce[唯一ID][.expand ][?
'events' ]上,而events是個鍵-值映射對象,鍵就是事件類型,對應的值就是由事件處理函數組成的數
組,最后在DOM元素上綁定(addEventListener/ attachEvent)一個事件處理函數eventHandle,這個過
程由 jQuery.event.add 實現。
執行綁定的時候:
當事件觸發時eventHandle被執行,eventHandle再去$.cache中尋找曾經綁定的事件處理函數并執行,這
個過程由 jQuery.event. trigger 和 jQuery.event.handle實現。
事件的銷毀則由jQuery.event.remove 實現,remove對緩存$.cahce中存儲的事件數組進行銷毀,當緩存
中的事件全部銷毀時,調用removeEventListener/ detachEvent銷毀綁定在DOM元素上的事件處理函數
eventHandle。
====
.domManip()是jQuery DOM操作的核心函數

對封裝的節點操作做了參數上的校正支持,與對應處理的調用

domManip其實就只做了2事件
第一個就是判斷3種傳遞參數所映射的對應操作
第二個就是通過調用jQuery.buildFragment生成文檔碎片
====
Queue隊列,如同data數據緩存與Deferred異步模型一樣,都是jQuery庫的內部實現的基礎設施

Queue隊列是animate動畫依賴的基礎設施,整個jQuery中隊列僅供給動畫使用

那么jQuery引入隊列其實從一個角度上可以認為:允許一系列函數被異步地調用而不會阻塞程序

$("#Aaron").slideUp().fadeIn()
這是jQuery的一組動畫鏈式序列,它的內部其實就是一組隊列Queue,所以隊列和Deferred地位類似,?
是一個內部使用的基礎設施,當slideUp運行時,fadeIn被放到fx隊列中,當slideUp完成后,從隊列中
被取出運行。queue函數允許 直接操作這個鏈式調用的行為。同時,queue可以指定隊列名稱獲得其他能
力,而不局限于fx隊列
====
jQuery從1.2.3版本引入數據緩存系統,主要的原因就是早期的事件系統 Dean Edwards 的 ddEvent.js代碼?


內存泄露的幾種情況
循環引用
Javascript閉包
DOM插入順序


一個DOM對象被一個Javascript對象引用,與此同時又引用同一個或其它的Javascript對象,這個DOM對
象可能會引發內存泄漏。這個DOM對象的引用將不會在腳本停止的時候被垃圾回收器回收。要想破壞循環
引用,引用DOM元素的對象或DOM對象的引用需要被賦值為null。


含有DOM對象的循環引用將導致大部分當前主流瀏覽器內存泄露
====

摘錄自

http://www.cnblogs.com/aaronjs/p/3279314.html


二 jquery 2.0.3折疊后的源碼截圖

























總結

以上是生活随笔為你收集整理的jquery 源码分析初步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。