实现防抖函数
防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
适用场景
- 按钮提交场景:防止多次提交按钮,只执行最后提交的一次
- 服务端验证场景:表单验证需要服务端配合,只执行一段连续的输入事件的最后一次,还有搜索联想词功能类似
简单实现
1 | const debounce = (fn, delay = 500) => { |
模拟JavaScript中的new
new 操作符做了那些事情
- 创建一个全新的对象
- 将对象的__proto__指向(链接)构造函数的prototype属性(原型对象)
- 构造函数通过call或者apply执行,将创建的对象传入,使this指向创建的对象
- 如果函数没有返回对象类型Object(Function、Array、Data、RegExg、Error),则返回创建的对象的引用
1 | function objectFactory () { |
实现节流函数
防抖函数原理:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
适用场景
- 拖拽场景:固定时间内只执行一次,防止超高频次触发位置变动
- 缩放场景:监控浏览器resize
- 动画场景:避免短时间内多次触发动画引起性能问题
简单实现
1 | const throttle = (fn, delay) => { |