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

建站wordpress大丰网站设计公司

建站wordpress,大丰网站设计公司,洛阳住房和城乡建设厅网站,德州网站建设目录 一、使用场景二、实现思路(详解,es6之前版本)三、es6实现四、第三方库 一、使用场景 函数内执行耗时操作函数执行不频繁,只有最后一次有意义举例:鼠标移动事件,键盘输入事件…等需要逻辑处理时 二、…

目录

  • 一、使用场景
  • 二、实现思路(详解,es6之前版本)
  • 三、es6实现
  • 四、第三方库

一、使用场景

  • 函数内执行耗时操作
  • 函数执行不频繁,只有最后一次有意义
  • 举例:鼠标移动事件,键盘输入事件…等需要逻辑处理时

二、实现思路(详解,es6之前版本)

举例场景为键盘输入事件,函数内部通过apply改变this指向,通过slice处理arguments(参数集)伪数组

  1. 前置
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>函数防抖</title>
</head>
<body><input type="text">
</body>
<script>var input = document.querySelector('input');input.addEventListener('input', function(e) {console.log(e.target.value);});
</script>
</html>
  1. 实现延时触发效果 – 使用高阶函数思想封装函数
    高阶函数(至少满足以下条件之一):1.接受一个或多个函数作为参数。2.返回一个新的函数。
	function debounce(fn, delay) {return function() {setTimeout(() => {fn();}, delay);}}var newFn = debounce(function() {console.log(111);}, 1000);var input = document.querySelector('input');input.addEventListener('input', newFn);
  1. 实现只响应最后一次触发 – 利用setTimeout返回值进行处理
    这里将this改为打印内容,我们可以发现this为undefined。
    原因:函数的this指向调用者,那么当前fn是在setTimeout中调用,指向全局
	function debounce(fn, delay) {var timer = null;return function() {clearTimeout(timer);timer = setTimeout(() => {fn();}, delay);}}var newFn = debounce(function() {console.log(this);}, 1000);var input = document.querySelector('input');input.addEventListener('input', newFn);
  1. 实现this绑定和参数传递
    arguments:函数调用时传入的所有参数(伪数组)
	function debounce(fn, delay) {var timer = null;return function() {clearTimeout(timer);timer = setTimeout(() => {var args = Array.prototype.slice.call(arguments,0); // 伪数组转化fn.apply(this,args);}, delay);}}var newFn = debounce(function(e) {console.log(this.value,e);}, 1000);var input = document.querySelector('input');input.addEventListener('input', newFn);
  1. 自定义参数传递
	function debounce(fn, delay) {var timer = null;return function() {clearTimeout(timer);timer = setTimeout(() => {var args = Array.prototype.slice.call(arguments,0);fn.apply(this,args);}, delay);}}var newFn = debounce(function(e,a) {console.log(e,a);}, 1000);var input = document.querySelector('input');input.addEventListener('input', (e)=>{newFn(e,1);});

三、es6实现

使用箭头函数、解构赋值、剩余参数等现代 JavaScript 特性
!!!箭头函数没有自己的 this,它会继承定义时所在作用域的 this

	const debounce = (fn, delay) => {let timer = null;return function(...args) {clearTimeout(timer);timer = setTimeout(() => {fn.apply(this, args);}, delay);}}const newFn = debounce(function(e) {console.log(e, this.value);}, 1000);const input = document.querySelector('input');input.addEventListener('input', newFn);

四、第三方库

lodash中文官网

http://www.dtcms.com/wzjs/824557.html

相关文章:

  • 医院网站信息化有哪些建设规范谷歌官网
  • 张槎网站开发移动端开发工具
  • 做像淘宝这样的购物网站要多少钱重庆是哪个省哪个市
  • 麦客网做网站百度网站制作联系方式
  • 课程网站建设技术北京企业建站
  • 代做企业网站备案比较好的网站建设公司
  • 班级网站模板素材wordpress双导航栏
  • 西宁网站建设模板网站设计制作体会
  • 国际版网站可以在国内做推广吗网站做不做301
  • 私人申请建设网站多少钱合肥做兼职网站设计
  • 电子商务网站系统规划 案例分析装修公司做推广网站怎么弄
  • 去什么网站做推广移动网站建设的前景
  • 响应式个人网站psd小程序游戏搭建
  • 做app的网站有哪些手机网站怎么做的好处
  • 网站安全防护找谁做教育网站模块建设
  • 南宁公司网站建设方案sem分析是什么
  • 高端网站设计简介邢台市建设银行网站
  • 深圳外贸建站广州seo网站推广优化
  • 计算机网站建设文献综述上海网页设计推荐
  • 三大门户网站php网站开发需求文档
  • 微信小程序公司网站怎么制作桂林市网站建设公司
  • 英语工作室网站怎么做网站排名突然下降
  • 教育品牌网站建设腾讯广告代理商加盟
  • 做平行进口的汽车网站广州哪里好玩的景点推荐
  • 网站开发包括网站过程网站建设既有书籍又有光盘
  • 织梦通用企业网站模板在网站建设工作会议上的讲话
  • 网站seo优化书籍长沙 网站设计 公司
  • 装修网站模板wordpress 主题2周前
  • 沈阳医疗网站建设张家港专业做网站
  • 网站建设 天津公司的网站建设与维护