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

网站建设实训教程软文代写新闻稿

网站建设实训教程,软文代写新闻稿,商城网站系统建设方案,工作室网站模板目录 一、使用场景二、实现思路(详解,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/447401.html

相关文章:

  • 潍坊最早做网站的公司营销策划方案模板范文
  • 网站开发岗位群河南网站seo
  • 临沂网站建设中企动力推广管理
  • 做网站用的服务器江苏搜索引擎优化公司
  • 设计官网品牌参考文献成都官网seo服务
  • 做图片的网站有哪些手机推广平台有哪些
  • 厦门网站建设网站宁波做网站的公司
  • 6617网址导航彩票网站大全网络营销的主要方式和技巧
  • 网站架设客服QQ糕点烘焙专业培训学校
  • 做渐变色的网站seoul是什么国家
  • 好的地产设计网站顾问
  • 2345网址导航手机版seo关键词教程
  • 筑招建筑人才网长春安全员搜索引擎优化的实验结果分析
  • 为什么做的网站别的浏览器打不开怎么办电商平台开发需要多少钱
  • 廊坊做网站外包网站创建公司
  • 济南外贸网站建设公司爱站网爱情电影网
  • 自已建网站卖东西要多少钱竞价推广托管公司价格
  • 长沙企业网站做网站推广
  • 网站建设哪公司好爱站网seo工具
  • 贵阳做网站方舟网络无屏蔽搜索引擎
  • 网站的详细设计关于进一步优化
  • 网站用户粘度百度网盘网页版登录入口
  • 网站制作 杭州常见的网络营销策略都有哪些
  • 乐清网站网站建设北京网站优化合作
  • 什么网站是vue做的企业培训考试app
  • 独立的淘客网站名么做百度指数分析官网
  • 什么是网站建设?北京seo优化外包
  • 全屏网站怎么做的关键词seo是什么
  • 做旅游去哪个网站找图3seo
  • 手机网站微信分享代码百度seo站长工具