1、首先看一下涉及到jquery快取機制的**結構:
// 定義一些jquery內部的變數,方便後續使用
var data_user, data_priv, // 後續會被賦值為兩個data物件
rbrace = /(?:\|\[[\s\s]*\])$/, // 匹配花括號和方括號及其中間的內容
rmultidash = /([a-z])/g;//匹配大寫字母
// 定義data的建構函式
function data() {}
// 為data建構函式新增乙個uid屬性
data.uid = 1;
// 哪些型別的物件可以使用data儲存資料的:元素節點、文件節點、object
data.accepts = function( owner ) {};
// 為data建構函式繫結方法
data.prototype = , // 生成乙個key唯一的key,這個key是通過jquery的唯一id加上乙個隨機數產生的
set: function( owner, data, value ) {}, // 向cache中寫資料
get: function( owner, key ) {}, // 從cache中拿資料
access: function( owner, key, value ) {}, // 乙個set和get的總入口?處理一些特殊情況?暫時不太了解
remove: function( owner, key ) {}, // 從cache中刪除資料
hasdata: function( owner ) {}, // 檢查owner(dom||object)上是否有資料
discard: function( owner ) {} // 清除owner上的所有資料
};// 內部例項化的兩個data物件。分工不同
// 使用第乙個data物件訪問資料
data_user = new data();
// 當所要儲存資料的物件是dom物件時,用來儲存該物件是否設定了hasdataattrs,僅限內部使用
data_priv = new data();
// 為使用者提供的使用$.的方式呼叫的介面
jquery.extend(, // 是否有資料
data: function( elem, name, data ) {}, // 訪問資料
removedata: function( elem, name ) {}, // 刪除資料
_data: function( elem, name, data ) {}, // 訪問資料(內部使用)
_removedata: function( elem, name ) {}, // 刪除資料(內部使用)
});// jquery提供給使用者的使用$(obj).的方式使用的介面
jquery.fn.extend(, // 訪問資料
removedata: function( key ) {} // 刪除資料
});// 乙個jquery的私有方法,不繫結到任何的物件裡,因為很多地方用到嗎?奇怪,為什麼要用這種方式寫到這裡?
function dataattr( elem, key, data ) {}
2、核心問題:
a)兩個例項化的data物件分別有什麼作用
b)data物件內部的cache中是以怎樣的形式訪問資料的
c)元素、data物件、key、cache是怎麼聯絡起來的
jQuery快取機制(三)
快取機制提供的入口有 data key value 訪問資料 hasdata elem 是否有資料 removedata key 刪除資料 acceptdata elem 檢測元素是否可以使用快取機制存資料 elem data key value 訪問資料 elem removedata key 刪...
IOS 開發快取機制 記憶體快取機制
使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...
Hibernate快取機制之一級快取
快取是介於應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。hibernate的第一級快取也就是session的快取,它...