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