- 防抖
- 节流
- 模拟 new 运算符
- 模拟 instanceof
- 模拟 Function.prototype.apply()
- 模拟 Function.prototype.call()
- 模拟 Function.prototype.bind()
- 模拟 Array.prototype.forEach()
- 模拟 Array.prototype.map()
- 模拟 Array.prototype.filter()
- 函数柯里化
- 类数组转数组
- 实现深拷贝
- 继承的实现
- 实现 AJAX
- 多维数组扁平化
- setTimeout 模拟 setInterval
- setInterval 模拟 setTimeout
- sleep
- 数组去重的多种实现方式
- 解析 URL 参数
- 斐波那契数列
- 发布订阅
- 带图带事件的 桌面通知
- 原生 30 行代码实现视频截图
- 基于 URLSearchParams 或 URL 获取 queryString 的值
- 基于 atob 和 btoa 的 base64 编码和解码
- 非正则替换 的 html 代码 encode 和 decode
- 相对地址转换为绝对地址
- 基于 URL 或者 Crypto.getRandomValues 生成 UUID
- 基于 Array.from 的序列生成器
- 基于 sendBeacon 的安全的数据上报
- 数字千分位
- 生成随机字符串 ID
- Promise 顺序执行
- 延时执行 delay
- 进度值映射
- 滑滚动页面到顶部
- 禁止选择和复制
- 禁止图片拖拽
- 浏览器操作相关 browser 工具函数
- 获取 url 参数(第一种)
- 获取 url 参数(第二种)
- 修改 url 中的参数
- 删除 url 中指定的参数
- 获取窗口可视范围的高度
- 获取窗口可视范围宽度
- 获取窗口宽度
- 获取窗口尺寸
- 获取滚动条距顶部高度
- 获取滚动条距左边的高度
- 开启全屏
- 关闭全屏
- 返回当前滚动条位置
- 滚动到指定元素区域
- 平滑滚动到页面顶部
- http 跳转 https
- 检查页面底部是否可见
- 打开一个窗口
- 自适应页面(rem)
- 日期工具 date 工具函数
- cookie 存贮
- cookie 获取
- cookie 删除
- 更多的工具函数
- 数字千分位
- 截取字符串并加身略号
- 获取文件 base64 编码
- B 转换到 KB,MB,GB 并保留两位小数
- base64 转 file
- base64 转 blob
- blob 转 file
- file 转 base64
- 递归生成树形结构
- 遍历树节点
- 追溯父节点
- 寻找所有子节点
- 根据 pid 生成树形结构
- 查询数组中是否存在某个元素并返回元素第一次出现的下标
- Windows 根据详细版本号判断当前系统名称
- 判断手机是 Andoird 还是 IOS
- 函数防抖
- 函数节流
- 判断数据类型
- 生成指定范围随机数
- 数组乱序
- 数组交集
- 数组中某元素出现的次数
- 加法函数(精度丢失问题)
- 减法函数(精度丢失问题)
- 除法函数(精度丢失问题)
- 乘法函数(精度丢失问题)
- 递归优化(尾递归)
- 生成随机整数
- 去除空格
- 大小写转换
- 随机 16 进制颜色 hexColor
- 转义 html(防 XSS 攻击)
- 检测移动/PC 设备
- 隐藏所有指定标签
- 返回指定元素的生效样式
- 检查是否包含子元素
- 数字超过规定大小加上加号 +,如数字超过 99 显示 99+
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
防抖
原理
事件高频触发后,n 秒内函数只会执行一次,若 n 秒内事件再次触发,则重新计时,总之就是要等触发完事件 n 秒内不再触发事件,函数才执行
代码实现
function debounce(callback, wait) {
let timer
return function (...args) {
clearTimeout(timer)
timer = setTimeout(() => {
callback.call(this,args)
},wait)
}
}
// 使用
document.body.addEventListener('mousemove',debounce((e)=>{
console.log(this,e,'mousemove-debounce')
},1000))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论