一、节流器
有一些高频事件,触发多次和触发一次的效果是一样,但是多次触发会导致性能消耗增加,所以针对于类似事件使用节流器(函数节流)
实例代码:
1/*
2 节流器:
3 添加节流器(延迟执行,将高频事件变为一次性的事件)
4 移除节流器
5 调用方式:
6 添加:
7 fn:要执行的程序
8 options;配置选项对象(可选参数)
9 []:调用函数fn时放置参数
10 context:执行上下文
11 time;延迟执行时间
12 调用:throttle(fn, options)
13 移除:
14 调用;throttle(false,fn)
15 实质:
16 clearTimeout(fn.timer)
17
18 函数重载:
19 1、函数的个数不同,调用不同的函数------执行不同的程序
20 2、实参的类型不同,调用不同的函数------执行不同的程序
21
22
23 开启延时器,第一次为赋值,其他次为更改值,多次调用函数节流器都要使其值相互独立
24 采用对象属性的方式
25 给fn添加一个timer属性
26
27*/
28function throttle() {
29 if (typeof arguments[0] === ‘function’) {
30 // 添加
31 // 接收参数
32 // 函数
33 var fn = arguments[0];
34 // 配置选项
35 var options = arguments[1] || {
36 // args: [1,2,3],
37 arg: [],
38 time: 1000,
39 context: null // 等价于默认指向了window
40 };
41 // 清除上一次的延时器
42 clearTimeout(fn.timer);
43 // 延时器
44 fn.timer = setTimeout(function() {
45 // 改变this指向,传入调用函数时的参数
46 fn.apply(options.context, options.args);
47 }, options.time);
48
49 } else {
50 // 移除
51 // 接收参数
52 // 函数
53 var fn = arguments[1];
54 if (fn.timer) {
55 clearTimeout(fn.timer);
56 }
57 }
58}
二、迭代器
1var $ = (function() {
Web前端中javaScript设计模式节流器
最新推荐文章于 2022-08-10 14:51:33 发布