jQuery源码分析随笔之数据缓存
jQuery的数据缓存机制对于js Object和DOM node分别存在两种方式: 情况一:对于js Object,数据就存储在Object本身,只不过数据都存储在Object下一个以“jQuery”开头的属性之下 例如: var obj = {}; $.data(obj, "username", "scott"); console.log(obj); 此时obj为: { jQuery16302287385049276054:{ username: "scott" } } 情况二:对于DOM node,数据则存储在jQuery.cache之中node对应的id号之下 例如: var elem = document.createElement("div"); $.data(elem, "password", "tiger");console.log(elem[$.expando]); console.log($.cache); 输出为: 1 {1:{password:"tiger"}} 这个例子中node对应的id为1,存储在其自身的$.expando属性之下,此id即对应$.cache中存储器数据位置的id,即这样建立起的对应关系 这里需要说明的是,$.expando的值即是以"jQuery"开头后面一串数字的字符串,例如前面的