javascript高级与面向对象笔记整理,接part5篇!!
闭包的练习
for循环中注册点击事件
for循环中是用setTimeout
缓存
缓存就是将一些数据,剧院,进行临时的存储,以提高访问效率
- 浏览器缓存
- CDN
- JS中的缓存
使用缓存解决斐波那契数列的性能问题
有什么性能问题
使用递归去计算斐波那契数列存在大量的重复的计算,导致计算效率十分底下
如何解决性能问题
使用缓存
- 创建一个数组充当缓存容器
- 每次需要计算斐波那契数列的时候,先去缓存中进行查找
- 如果有就直接返回
- 如果没有,就去计算,算出来结果之后
- 将结果存入缓存中
- 将结果返回
1 | //1.创建一个数组充当缓存容器 |
优化后的代码
1 | function createFib(){ |
jQuery缓存实现分析
1 | function createCache(){ |
Jquery缓存源码分析
1 | function createCache(){ |
函数的四种调用形式
函数调用模式
形式:函数名();this:window
方法调用模式
形式:对项目.方法名();
this:调用该方法的对象
构造函数调用模式
形式 new
函数名()
this:new创建出来的对象
工厂模式
1 | function createPerson(){ |
寄生模式
1 | function Person(){ |
上下文调用模式
在其他的调用模式中, this
不可以赋值,也就不可以改变
在上下文调用模式中,可以进行手动的设置 this
。
call
1 | //函数名.call(对象, 参数1, 参数2, 参数3...) |
- 调用函数
- 将函数内的
this
指向第一个参数中的对象 - 将除第一个参数外的所有参数依次传给函数,做为实参
apply
1 | //函数名.apply(对象, 数组) |
- 调用函数
- 将函数内的
this
指向第一个参数中的对象 - 将第二个参数中的数组拆解开,将数组中的元素依次的传给函数当做实参
借用构造函数继承
1 | function Parent(){ |
- 使用
new
关键字创建了一个对象 - 调用构造函数
Son
,将Son
中的this
指向刚才创建的对象 - 在
Son
构造函数中,是用上下文调用模式去调用Parent
函数, - 调用
Person
函数,将Parent
中的this
指向song
中的this
,也就是用new
创建出来的那个对象 -
Parent
中会使用this
给对象添加成员 -
Parent
调用结束,Son
中的this
也就有了Parent
中添加的那些个成员
将伪数组转换成数组
1 | var fakeArr = { |
求数组的最大值
1 | var arr = [1 ,2,3,3,4,4,34,3,43,43,43,4,34,3]; |