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 源码分析初步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win-tc不能在win7下使用
- 下一篇: 第一次使用aspnet_compiler