天天看點

讀jquery資料緩存

讀jquery資料緩存

資料緩存在jquery中很重要,可能平時你用的未必多,但是在jquery内部很多重要子產品都有用到它,記得我們之前分析過的隊列queue有用到資料緩存,還有一個很重要的子產品也會用到資料緩存那就是事件。

對于對比data和attr及prop最大優點那就是防止記憶體洩露了。jquery源碼裡有很多設計很巧妙的點,都值得我們去揣摩和學習的。那我們現在開始讀jquery資料緩存源碼之路了。

讀jquery資料緩存

我們看圖可以很清楚的看出,執行個體方法是依賴工具方法實作的而工具方法是一個資料對像實作的,是以最終的實作是面像對像的這個函數。是以我們隻需看這個函數就可以了。

讀jquery資料緩存

首先構造函數中的defineProperty的功能是防止外部修改對像,這裡的意思就是防止外部修改this.cache這個對像。this.expando是産成一個帶版本号的随機數這個用于向元素添加一個随機的屬性,如果我們運作$.data($(".inner"),"name","5555") ,原型裡的key函數的功能就是向元素添加一個自定義屬性屬性的值是1,在cache對像裡以屬性值為key添加一個空對像 cache[key]={}。原型裡的set方法是找到元素的key值然後在cache[key]={"name":"555"}chche裡把屬性放進去。原型裡的get方法是獲得chche裡的值。原型裡的access是根據參數調用get或set方法,至于removeDate和hasDate就和它的名子一樣是删除和判斷元素是否有chche值。

讀jquery資料緩存