jQuery缓存机制(一)
1、首先看一下涉及到jQuery缓存机制的代码结构:
// 定义一些jQuery内部的变量,方便后续使用
var data_user, data_priv, // 后续会被赋值为两个Data对象
rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, // 匹配花括号和方括号及其中间的内容
rmultiDash = /([A-Z])/g;//匹配大写字母
// 定义Data的构造函数
function Data() {}
// 为Data构造函数添加一个uid属性
Data.uid = 1;
// 哪些类型的对象可以使用Data存储数据的:元素节点、文档节点、Object
Data.accepts = function( owner ) {};
// 为Data构造函数绑定方法
Data.prototype = {
key: function( owner ) {}, // 生成一个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({
acceptData: Data.accepts, // 标记哪些元素或者对象可以使用该Data存取数据
hasData: function( elem ) {}, // 是否有数据
data: function( elem, name, data ) {}, // 存取数据
removeData: function( elem, name ) {}, // 删除数据
_data: function( elem, name, data ) {}, // 存取数据(内部使用)
_removeData: function( elem, name ) {}, // 删除数据(内部使用)
});
// jQuery提供给用户的使用$(Obj).的方式使用的接口
jQuery.fn.extend({
data: function( key, value ) {}, // 存取数据
removeData: function( key ) {} // 删除数据
});
// 一个jQuery的私有方法,不绑定到任何的对象里,因为很多地方用到吗?奇怪,为什么要用这种方式写到这里?
function dataAttr( elem, key, data ) {}
2、核心问题:
a)两个实例化的Data对象分别有什么作用
b)Data对象内部的cache中是以怎样的形式存取数据的
c)元素、data对象、key、cache是怎么联系起来的
jQuery缓存机制(一)的更多相关文章
- jQuery缓存机制(三)
缓存机制提供的入口有: $.data([key],[value]) // 存取数据 $.hasData(elem) // 是否有数据 $.removeData([key]) // 删除数据 $.acc ...
- (五)JS学习笔记 - JQuery缓存机制
历史背景 开发中常常因为方便,把状态标志都写到dom节点中,也就是HTMLElement,缺点: 循环引用 直接暴露数据,安全性? 增加一堆的自定义属性标签,对浏览器来说是没意义的 取数据的时候要对H ...
- jQuery缓存机制(四)
Data封装的方法的后面四个方法 和 dataAttr方法阅读. Data.prototype = { key: function( owner ) {}, set: function( owner, ...
- jQuery缓存机制(二)
1.从用户调用的入口开始阅读,因为这是我们比较熟悉的部分(主要做参数的调整,根据不同的完成不同的功能) // 进入jQuery Data模块的入口 使用方法有三种,不传参,传一个参,传两个参.示例$( ...
- jquery源码解析:jQuery数据缓存机制详解1
jQuery中有三种添加数据的方法,$().attr(),$().prop(),$().data().但是前面两种是用来在元素上添加属性值的,只适合少量的数据,比如:title,class,name等 ...
- jquery源码解析:jQuery数据缓存机制详解2
上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...
- Java缓存学习之三:CDN缓存机制
CDN是什么? 关于CDN是什么,此前网友详细介绍过. CDN是Content Delivery Network的简称,即"内容分发网络"的意思.一般我们所说的CDN加速,一般是指 ...
- Java缓存学习之二:浏览器缓存机制
浏览器端的九种缓存机制介绍 浏览器缓存是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户.浏览器端缓存 ...
- 浏览器缓存机制<转>
转这篇文章是感觉可以在图片加载的时候,也使用这样的缓存策略 作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或 ...
随机推荐
- CentOS系统基础优化16条知识汇总
1.不用root管理,以普通用户的名义通过sudo授权管理: 2.更改默认的远程连接服务端,禁止root用户远程连接,甚至要更改只监听内网ip: 3.定时自动更新服务器时间,使其和互联网时间同步: 4 ...
- 每天一个linux命令:ifconfig命令 临时修改重启后恢复原样
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- windows下Nginx与tomcat组合简单使用
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中瓦片资源越来越多,如果提高瓦片的访问效率是一个需要解决的 ...
- VCL 中的 Windows API 函数(4): AdjustWindowRectEx
AdjustWindowRectEx 用在了 Forms.DBCtrls 单元. AdjustWindowRectEx 可以根据窗口样式获取的边缘尺寸. 测试: var R: TRect; beg ...
- node配置自动监测文件改变不重启
方法一: nodemon npm install -g nodemon nodemon ./bin/www 或者在npm start命令里把node改为nodemon 方法二:supervisor n ...
- consul在windows下的安装
consul的下载 https://www.consul.io/downloads.html 选择对应的系统版本 修改环境变量path 启动命令窗口 执行命令 consul agent -dev 打开 ...
- in语句导致查询很慢
1.表A,表B,表C.其中A中的主键是B的外键,一对多的关系:B的主键是C的外键,一对多的关系.最终想查出所有符合条件的C. 原因:开发人员将A表数据先查出来,放到list中,然后用list作为in的 ...
- Bootstrap——网站添加字体图标
@font-face { font-family: 'itcast'; src: url('../font/MiFie-Web-Font.eot') format('embedded-opentype ...
- tomcat 的 server.xml配置文件
tomcat的配置文件在其安装后生成的conf目录下,其中主配置文件便是conf下的server.xml文件. server.xml文件由server->service->engine-& ...
- 【RF库Collections测试】Remove Values From List
Name:Remove Values From ListSource:Collections <test library>Arguments:[ list_ | *values ]Remo ...