我正在参与掘金新人创作活动,一起开启写作之路。
一、ES5中的类与继承
1.1 ES5中的类
- ES5中没有累的概念,我们通常通过构造函数来模拟类
- function 声明时通常大写,意味着定义一个类,比如 function Dog(){}
- 通过new Dog() 来声明实例化对象
- this指向的是new 出来的实例化对象
- 我们通常不在构造函数中定义方法,因为每次new时,都会伴随一个new Function,我们通常将方法放在原型上
1.2 静态属性和静态方法
1.2.1 静态属性和实例属性
- 静态属性直接定义在类上,实力属性定义在构造函数内
1.2.2 静态方法与实例方法
- 静态方法内的this指向当前构造函数,其实就是Dog.getColor= function等这一部分代码
- 静态方法内是不能使用实例属性的,因为this指向变了
- Math.max等等方法,就是静态方法,不需要new调用
1.3 ES5中类的继承
1.3.1 构造函数继承
- 构造函数继承只能继承父类的属性,不能继承父类的方法
1.3.2 原型继承
- 原型继承可以继承父类的方法,不能继承属性
1.3.3 组合继承
- 组合继承就是原型继承和构造函数继承的组合,这样就能既继承属性又继承方法
二、ES6中的类与继承
2.1 ES6中的类
- 通过class关键字定义类,类名通常大写,包含一个constructor构造函数
- class其实是一个语法糖