jQuery原始碼分析 資料快取系統

2021-08-03 12:46:02 字數 1293 閱讀 5591

迴圈引用時的記憶體洩漏

直接暴露資料不安全

多自定義屬性對瀏覽器來說無意義

取資料的時候要對html節點進行操作

jquery快取系統解決了這個問題。(從事件系統分化出來的)

靜態方法:$.data(ele)

例項方法:$(ele).data()

$(ele).data()是對$.data(ele)的擴充套件,

$.data(ele)可為dom元素或者js物件新增資料

$(ele).data()是為dom節點新增資料,會覆蓋key相同的值,

資料放在記憶體中,通過對映關係與繫結的dom關聯。

1.例項方法:
$(ele).data

()

資料儲存在jquery.cache中,為dom元素分配屬性expando,值唯一,和快取物件 jquery.cache關聯起來,則cache[id]就會讀到所有的這個節點的快取,

cache結構如下:

var

cache

=, "id2":,

}

每個id對應一組快取資料。所以屬性名相同時會覆蓋

2.靜態方法:

jquery.data

(ele,[key],[value]);

每個ele都有自己的物件,新建的物件即使key相同也不會覆蓋

var body1 = $("body")

var body2 = $("body")

$.data(body1, "bar", '一');

$.data(body2, "bar", '二');

show( $.data(body1, "bar") )

show( $.data(body2, "bar") )

jquery原始碼分析 data快取

data和attr prop的作用類似 都是給元素新增屬性,但是data可以防止dom元素與物件之間的互相引用,從而防止出現記憶體洩漏的現象。data可以作為工具方法和例項方法使用 var obj data obj,name hello removedata obj,name console.log...

jQuery 2 0 3 原始碼分析 資料快取

var aa1 aaron var aa2 aaron 覆蓋 aa1.data a 1111 結果2222222 aa2.data a 2222 結果2222222 console.log aa1.data a console.log aa2.data a 不覆蓋 data aa1,b 1111 d...

jQuery原始碼分析

工具 版本說明 版本號備註 jquery 2.1.1 sublime 3jquery function selector,context jquery.fn jquery.prototype 快速匹配正則 不加g 不光匹配整體項還會匹配到子項 rquickexpr s w w w init jque...