Web前端中javaScript设计模式节流器

一、节流器
有一些高频事件,触发多次和触发一次的效果是一样,但是多次触发会导致性能消耗增加,所以针对于类似事件使用节流器(函数节流)
实例代码:
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() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值