面向对象--第五篇(函数的调用模式)

JavaScript

闭包练习

setTimeout的执行时机
    所有的主任务的代码执行完毕之后,去检查所有的setTimeout回调函数,如果到时间了就执行

用闭包来解决回调函数在调用的时候访问的是全局的变量
在闭包中创建一个变量,来单独存储当前的回调函数需要的数据,
在调用的时候就会去使用这个单独的数据,而不是去访问全局变量

注册点击事件的时候
点击事件在触发的时候访问的是全局的变量
在闭包中创建一个变量,来单独存储当前的事件处理函数需要的数据,
在调用的时候就会去使用这个单独的数据,而不是去访问全局变量

闭包缓存

缓存:将常用的数据进行存储,以提升性能

硬件缓存
浏览器缓存
CDN
内存型数据库

如何用闭包实现缓存
1、写一个闭包在闭包中创建一个对象,用来做缓存的存储对象
2、在闭包中创建一个对象,用来做缓存的存储对象
3、在闭包中创建一个数组,用来存储换中的键
4、返回一个函数,这个函数需要两个参数,一个是key 一个是value
5、在返回的函数中,判断传入的value是否为undefined
6、如果为Undefined 则表示是获取值,就直接返回在第一步创建的缓存对象中指定的键对应的值
7、如果不为Undefined 则表示是设置值
8、在缓存对象中设置指定的key的值为value
9、把key加入存储key的数组
10、判断key数组是不是超出了缓存大小限制
11、如果超出限制,删除数组第一个元素(使用shift),获取到删除的key
12、使用删除的key删除缓存对象中存储的值(delete)

使用缓存解决斐波那契数列的性能问题

就是将已经计算过的数字缓存进一个数组中,下次再来访问的时候,直接在数组中进行查找,如果找到直接使用,如果没有找到,计算后将数字存入数组,然后返回该数字

沙箱模式

沙箱模式就是一个封闭的独立的环境

沙箱模式的基本模型
(function(){
    //变量定义
    //逻辑代码
    //如果需要,向window对象添加成员,以暴露接口
})()

第三方框架
插件
独立的组件

函数的四种调用模式

函数模式
this—>window
方法模式
this—->调用方法的对象
构造函数模式
this—–>new出来的对象
工厂模式
寄生模式
上下文模式
this—–>指定的是谁就是谁
call 函数.call(对象,arg1,arg2,arg3,…argn)
apply 函数.apply(对象,数组)
都可以用来改变this的指向为参数的第一个值
call是使用单独的每一个参数来传参
apply是使用数组进行传参的,这个数组在调用的时候,会被意义拆解,当做函数的每一个采参数

call在函数的形参个数确定的情况下使用
apply在函数的形参个数不确定的情况下使用
bind 只会改变this 不会立即执行

this指向不同
this的指向图解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值