# 一、复习
1、面向对象
- 面向:以....为主
- 对象:提高了信息的传输和查找速度
- 特点:封装、继承、多态
- 面向过程-面向函数-面向对象-面向模块-面向组件
- 创建:
- 单列模式创建对象:只有一个对象被操作
- 字面量:const obj = {}
- 创建函数: const obj2 = new Object()
- 工厂模式创建对象:批量创建多个同特点的对象
- 将单例模式创建对象的方式进行封装
- 把相同属性,提前放在一个对象中->构造函数(类)
- 把相同的方法,提前放在原型中->原型(规范)
- 执行封装后的函数,实现批量创建对象->new执行函数(实例)
- 类:是实例的抽象
- 规范:提供了实例的规范接口
- 实例:是类的具象
- 过程:
- 分析:拆解项目,拆分成小功能
- 设计:将各个小功能根据各自的联系,进行组装和拼接
- 编程:按照分析和设计的结果进行实际行动
- 分析和设计过程中遵守规则:高内聚、低耦合
- 原型
- 原型属性:函数的prototype
- 原型链属性:实例的__proto__
- 关系:实例的__proto__指向创建自身的函数的prototype
- 对象的属性或方法的使用原则
- 顺着__proto__逐层查找
- 就近原则
- new的原理
1、创建对象
2、改变原函数的this指向该对象
3、将着新对象的__proto__指向了原函数的prototype
4、原函数是否主动返回对象,无,返回这个函数
# 三、ES6新增的class
1、实例属性抽象成类(构造函数)
2、实例的方法抽象成功能接口规范(构造函数的原型)
3、高内聚低耦合
4、ES6新增的class语法
class Fn{
constructor(n,m){
//<!-- 等同于构造函数 -->
this.name=n
this.age=m
}
// <!-- 等同于原型部分 -->
abc(){
console.log(this.name)
console.log(this.age)
}
}
const f= new Fn('fds',18);