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