博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery-我们缓存的数据去哪了
阅读量:6232 次
发布时间:2019-06-21

本文共 994 字,大约阅读时间需要 3 分钟。

研究源码可以提高对框架的认识,写出性能上更友好、更具语义化的代码。jQuery不管是否过时了,喜欢就看,不喜欢就把网页关掉,不必去争论过时与否的问题。

平时我们$dom.on和$dom.data存储的数据和回调函数都去哪了?

events:

解开一个click:

推测namespace是event的命名空间:

dom是怎么和$.cache发生关系的?

把值直接套入:

它们之间的联系如下:

证明储物柜存储内容如图中所描述的:

1、data属性存储的是$dom.data(name, value)存储 的内容:

2、events存储的就是事件相关的数据:

//查看初始数据

//自定义一个事件到body上,然后查看数据:

动态添加的句柄是会放在JS的虚拟机中

3、handle是什么鬼

//命令行调试直接定位:

//内部的dispatch应该是派发事件,即触发事件句柄

//通过拿到储物柜,然后再拿对应的事件句柄:

遍历,拿出来处理再存储:

在下一处循环进行拆解,通过apply调用

jq的事件回调里面如果return false;的话,可以阻止事件冒泡,这也是上图中,为什么要在循环的底部做下图的处理:

handle最后还是批量触发某一种时间类型的回调。

=======================================================

1、$.cache就是整个jquery的数据存储仓库,

2、cache也是变相的挂载在window上,当我们缓存的越多,内出占用就越大,所以不要轻易去存储数据

3、尽管jquery有做优化,毕竟瘦死的骆驼比马大。

4、存储数据的路径,层级比较复杂,data的数据通过obj.attr属性读取,events这是通过obj.attr拿到事件句柄集合,然后通过循环调用特定的句柄,通过apply去触发,所以读取的过程也是一份开销:

obj.attr相对数组、局部变量来说,读取的速度是最慢的。

像我们在mousemove,scroll,mousewheel这类高频事件上,就不推荐在里面读写cache上面的数据,可以看下$dom.data和$dom.on这两个接口,内部比较复杂,运算较多。

但事件交互的过程中有时候需要缓存一些状态、数据判断程序的下一步如何运行,这一类的需求一般可以通过外部作用域的局部变量或者对象去做通信

转载地址:http://uiana.baihongyu.com/

你可能感兴趣的文章
16.4 Connect your app to Google
查看>>
单片机C语言基础编程源码六则2
查看>>
圆角button
查看>>
2017-2018-1 20155203 实验三 实时系统
查看>>
架构师速成7-高中 分类: 架构师速成 2015-0...
查看>>
内建函数之:reduce()使用
查看>>
python输入字符串
查看>>
下载的chm打不开 chm看不了 已取消到该网页的导...
查看>>
qboimathtest1 t2 配对
查看>>
p4570 [BJWC2011]元素
查看>>
基础数据结构-线性表-顺序表的合并操作
查看>>
MFC 程序入口和执行流程
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
查看>>
【7】异常处理
查看>>
201621123057 《Java程序设计》第9周学习总结
查看>>
题目1081:递推数列 (矩阵快速幂解递推式)
查看>>
【转】 FRTO—虚假超时剖析
查看>>
html区块元素
查看>>
json数据结构
查看>>
使用classList来实现两个按钮样式的切换
查看>>