jQuery_數(shù)據(jù)緩存學(xué)完總結(jié)
1.$.data(ele):靜態(tài)方法給每個(gè)對(duì)象上都附加一個(gè)uid,這樣即使對(duì)象有一樣的key也不會(huì)覆蓋由于uid不同獲取到的value也不同
2.$(ele).data():實(shí)例方法給對(duì)象中的DOM節(jié)點(diǎn)上附加uid,這樣后面的會(huì)覆蓋前面的,因?yàn)橹桓郊由狭俗詈蟮膗id
例:
expando值,如jqueryExpando00001;
uuid值,如1;
cache塊,cache[uuid]=緩存內(nèi)容;
dom或?qū)ο箨P(guān)聯(lián)expando和uuid,即dom[expando]=uuid或?qū)ο骩expando]=uuid
?
可參考前面章節(jié)“jQuery緩存的設(shè)計(jì)思路”:
數(shù)據(jù)緩存,jQuery現(xiàn)在支持兩種:
1. dom元素,數(shù)據(jù)存儲(chǔ)在jQuery.cache中。
2. 普通js對(duì)象,數(shù)據(jù)存儲(chǔ)在該對(duì)象中。
處理方式:
1:如果是DOM元素,通過分配一個(gè)唯一的關(guān)聯(lián)id把DOM元素和該DOM元素的數(shù)據(jù)緩存對(duì)象關(guān)聯(lián)起來,關(guān)聯(lián)id被附加到以jQuery.expando的值命名的屬性上,數(shù)據(jù)存儲(chǔ)在全局緩存對(duì)象jQuery.cache中。在讀取、設(shè)置、移除數(shù)據(jù)時(shí),將通過關(guān)聯(lián)id從全局緩存對(duì)象jQuery.cache中找到關(guān)聯(lián)的數(shù)據(jù)緩存對(duì)象,然后在數(shù)據(jù)緩存對(duì)象上執(zhí)行讀取、設(shè)置、移除操作。
2:如果是Javascript對(duì)象,數(shù)據(jù)則直接存儲(chǔ)在該Javascript對(duì)象的屬性jQuery.expando上。在讀取、設(shè)置、移除數(shù)據(jù)時(shí),實(shí)際上是對(duì)Javascript對(duì)象的數(shù)據(jù)緩存對(duì)象執(zhí)行讀取、設(shè)置、移除操作。
3:為了避免jQuery內(nèi)部使用的數(shù)據(jù)和用戶自定義的數(shù)據(jù)發(fā)生沖突,數(shù)據(jù)緩存模塊把內(nèi)部數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)緩存對(duì)象上,把自定義數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)緩存對(duì)象的屬性data上。
2016-12-25
贊+100