当前位置: 首页 > news >正文

防抖函数(最全 最干净 最好理解)

1.应用场景

1.input输入框 输入远程查询

2.邮箱,手机号验证,用户名验证

3.resize等高评率场景

2.解决问题

高频场景带来的重复渲染 等问题

多次操作 只在操作结束后再执行操作函数

3.具体实现

3.1this问题(因为settimeout是window的对象 所以函数中this指向window 除非箭头函数)

1.事件函数里的this才指向box

错误示范:return里面的this 与函数体内的this指向 在不同场景中 指向并不相同

解决方案: 可以使用 fun.call(this) 来重定向函数中this的指向 【call 传参是单个】

3.2事件对象

1.arguments 作为函数的关键字,它接收的是这个函数传递的所有实参,包括这个事件对象

因为事件对象是默认传递的参数,因为call只能传递一个参数,所以我们选择使用 fun.apply(this, args)


3.3具体代码实现
 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>html {height: 100%;}body {display: flex;height: 100%;justify-content: center;align-items: center;}.box {width: 100px;height: 100px;text-align: center;line-height: 100px;background: #FF9800;color: #fff;}</style>
</head>
<body><div class="box">  0 </div><script>const debounce = function (fun, delay) {let timeoutreturn function() {timeout && clearTimeout(timeout)// 解决事件函数绑定中thislet that = this// 绑定事件中 事件函数的传递let argus = argumentstimeout = setTimeout(() => {fun.apply(that, argus)  }, delay);}}function fun(e) {count++console.log('>>>>>>>>>>>>', e, this)e.target.innerText = count}let count = 0console.log()document.querySelectorAll('.box')[0].addEventListener('mousemove', debounce(fun, 300))</script>
</body>
</html>

http://www.lryc.cn/news/60200.html

相关文章:

  • 王小川,才是深「爱」李彦宏的那个人?
  • 南京邮电大学通达学院2023《电子装配实习》报告
  • Linux--tty
  • 一位女程序员的自述:我是如何成为前端工程师的
  • C++命名空间详解
  • HDMI EDID概念梳理
  • Android端推送消息之极光推送
  • 2023测试工程师全新技术栈,吃透这些,起薪就15k
  • 十、CNN卷积神经网络实战
  • App 自动化测试
  • 考研英语知识点
  • IPSEC实验(IPSECVPN点到点,DSVPN,IPSECVPN旁挂)
  • 从4k到42k,软件测试工程师的涨薪史,给我看哭了
  • tomcat作业
  • 除了Java,还可以培训学习哪些IT技术?
  • Mysql优化(一)-- sql语句优化概述及数据库优化
  • 深度学习快速参考:1~5
  • 软件设计师笔记-----程序设计语言与语言处理程序基础
  • WebRTC 系列(三、点对点通话,H5、Android、iOS)
  • RabbitMQ( 发布订阅模式 ==> DirectExchange)
  • Pytorch基础 - 5. torch.cat() 和 torch.stack()
  • 基于AIGC的3D场景创作引擎概述
  • C++算法恢复训练之快速排序
  • 事务的特性
  • Python 计算三角形的面积、Python 阶乘实例
  • C++入门教程||C++ 重载运算符和重载函数||C++ 多态
  • docker+docker-compose+nginx前后端分离项目部署
  • 基于PCA与LDA的数据降维实践
  • 【Hello Network】网络编程套接字(一)
  • 【计算机网络】学习笔记:第二章 物理层(五千字详细配图)【王道考研】