1 深拷贝与浅拷贝
在这几个地方涉及到了拷贝
23. 节点_Suyuoa的博客-CSDN博客 复制节点 node.cloneNode()
深拷贝实质上是拷贝要拷贝的对象自身,浅拷贝实质上是对要拷贝对象的引用。
当你浅拷贝复制A为B的时候,改动B会给A造成影响
当你深拷贝复制A为B的时候,改动B不会给A造成影响
2 防抖
防抖就是让事件触发后延迟n秒后再执行回调函数,在这n秒内如果事件又被触发,则重新计时(再等n秒后触发)
- 相当于英雄联盟按回城后需要等待几秒才能成功,如果再按一下回城就重新计时
防抖的目的有两个
- 怕用户按错了,按错了达到了一个不想要的结果前给你一个可以取消的时间,还是以回城举例,按了一下回城,等几秒,这几秒你发现按错了,你就可以移动一下或者进行别的什么操作取消回城
- 频繁触发同一个事件只需要在确定结果后执行一遍回调函数,比如一些搜索框的建议,如果不做防抖,那么你的每一次输入都会给你一次建议,如果做防抖就会在你输入完毕后只给你一次建议
防抖的常用方式是使用定时器,在事件开始的时候使用clearTimeout(),之后给回调函数setTimeout(),在输入框防抖中我们使用过 附录5-淘宝搜索案例_Suyuoa的博客-CSDN博客
3 节流
节流是在n秒内无论执行多少次也只当作执行一次,比如说在1s内你按了10次回城,如果加了节流你就只会执行第一次回城,且后面的9次不影响你的第一次操作。在轮播图的左右点击按钮我们会用到节流,令其如果在n秒内点击了多次只切换一次
节流的目的主要就是降低事件的触发频率
节流的常用方式是搞一个节流阀(一个变量给布尔值),在轮播图中我们使用过 37.轮播图_Suyuoa的博客-CSDN博客
视频中介绍了一个图片跟随鼠标的节流例子也可以很直观的看出节流的区别,感兴趣可以看一下 12.案例-使用节流优化案例效果_哔哩哔哩_bilibili 在视频中的例子并不是一个布尔变量,而是一个定时器定了一个极短的时间(16ms)让人眼看不出来区别。