jQuery緩存設計接口對數據的處理有如下幾種:
用name和value為對象附加數據 一個對象為對象附加數據 為 DOM Element 附加數據
設計的思路:(請參考右邊代碼)
常規的數據緩存,我們都大多為了方便直接就綁定到了dom對應的元素上了,最為常見的就是事件對象的回調函數了,還有一些DOM的屬性。當然這也不是不可以,jQuery早期就是這么干的,但是容易引發循環引用,也會帶來一定的全局污染的問題。那么jQuery在之后的改進就獨立出了一個”數據緩存“的模塊。
其核心的關鍵就是:
數據存放在內存中,通過一個映射關系與直接的DOM元素發生關聯
數據緩存,jQuery現在支持兩種:
1. dom元素,數據存儲在jQuery.cache中。 2. 普通js對象,數據存儲在該對象中。
首先先要在內存中開辟一個區域,用來保存數據,jQuery用cache對象{},那么所有的數據無法就是針對cache的CURD操作了。
1:如果是DOM元素,通過分配一個唯一的關聯id把DOM元素和該DOM元素的數據緩存對象關聯起來,關聯id被附加到以jQuery.expando的值命名的屬性上,數據存儲在全局緩存對象jQuery.cache中。在讀取、設置、移除數據時,將通過關聯id從全局緩存對象jQuery.cache中找到關聯的數據緩存對象,然后在數據緩存對象上執行讀取、設置、移除操作。
2:如果是Javascript對象,數據則直接存儲在該Javascript對象的屬性jQuery.expando上。在讀取、設置、移除數據時,實際上是對Javascript對象的數據緩存對象執行讀取、設置、移除操作。
3:為了避免jQuery內部使用的數據和用戶自定義的數據發生沖突,數據緩存模塊把內部數據存儲在數據緩存對象上,把自定義數據存儲在數據緩存對象的屬性data上。
所以jQuery在數據緩存的處理抽出一個Data類出來,通過2組不同的實例,分別處理不同的處理類型:
var data_priv = new Data(); var data_user = new Data();
一個是給jQuery內部只用,比如數據對象,queue,Deferred,事件,動畫緩存
另一個對象data_user是提供給開發者使用的,比如$.attr(),$.data等等.
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報