JS高级总复习
Javascript基础复习
面向对象
- 把解决问题的重点放在解决问题相关的对象上
- 封装/继承/多态
- 对象:无序的键值对
- 属性:数值类型的
- 方法:函数类型的
- 创建对象的方法
- 字面量:用完之后不可复用
- 内置对象创建:a)创建的是空对象,需要手动添加属性 b)动态特性:创建好对象后,可以给对象添加属性和方法
- 工厂函数:定义一个对象,给他动态添加属性,返回
- 自定义构造函数:a)也是函数的一种,一般用来初始化对象 b)和new一起出现,new创建一个对象,构造函数初始化对象 c)返回new创建的对象 d)如果return的基本类型,不影响,仍返回new对象 / 返回Object类型,返回这个Object
- 自定义构造函数的执行过程:a)先使用new创建对象 b)把new创建出来的对象交给构造函数的this
c) 在构造函数内部通过this给对象封装方法
- 原型
- 在构造函数创建出来的时候默认会创建一个与对象与之关联,这个对象就是原型对象
- 访问 构造函数.prototype / 对象._ proto _
- 原型的使用:直接替换/混入式添加属性和方法/经典继承
- 原型链:每个对象都有原型对象,原型对象又有原型对象
Function
- 创建函数
递归
- 化归思想
- 案例:求和、阶乘、斐波那契数列、获取所有页面节点
作用域
- 词法作用域
- 变量提升
- JS执行阶段
- 预解析阶段
- 执行阶段
作用域链
- 外部无法访问内部作用域
- 内部可访问外部
闭包
- 封闭的对外不公开的空间
- 外面访问不到
- 外部访问只能通过内部的接口
- 作用:保护数据
- 案例:返回多个值/设置及获取、歌曲播放列表、解决斐波那契数列问题、闭包对缓存实现了一个保护作用
- jQuery实现缓存
- 定义一个对象存储数据
- 定义一个数组存储键:a)记录顺序 b)记录长度,超容量判断
沙箱模式
- 一个封闭的对外隔离的环境
- 避免外界窃取内部的数据
- 使用自调用(IIFE)函数实现
- 限制作用域
- 自调用函数没有名字
- 代码结构
- 最上面:定义变量
- 中间:逻辑代码
- 下面:暴露接口(有利于代码压缩)
1.最后及加上window
2.给函数一个形参
3.形参.变量 = 变量
- 作业:封装第三方插件、封装框架
函数调用模式
- 函数调用模式
- this指向window
- 方法调用模式
- this指向与之关联的对象
- 构造函数调用模式
- this指向new创建的对象
- 上下文调用模式
- call(对象,[],[],..[])
- apply(对象,[])
- 可以用apply实现借用构造函数
- 在当前函数使用其他函数.apply()
注册事件兼容性
- addEventListenter(事件,处理函数)
- attachEvent(on 事件,处理函数)
- 回调函数的this的指向与其他两个不同
- on事件 = 处理函数
- 案例:
- 歌曲管理案例
- 方法写在原型
- 属性写在构造函数内
- Tab栏切换案例
- 歌曲管理案例