读jquery数据缓存

读jquery数据缓存

数据缓存在jquery中很重要,可能平时你用的未必多,但是在jquery内部很多重要模块都有用到它,记得我们之前分析过的队列queue有用到数据缓存,还有一个很重要的模块也会用到数据缓存那就是事件。

对于对比data和attr及prop最大优点那就是防止内存泄露了。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值。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值