什么是 Class? Class 的作用
ES6 的 Class 可以看作只是一个 ES5 生成实例对象的构造函数的语法糖。
它参考了 java 语言,定义了一个类的概念,让对象原型写法更加清晰,对象实例化更像是一种面向对象编程。
什么是 extends? extends 的作用
extends 是 ES6 引入的关键字,其本质仍然是构造函数+原型链的组合式继承。
Class 类可以通过 extends 实现继承
Class 和 ES5 构造函数的不同点
1、类的内部定义的所有方法,都是不可枚举的。
2、ES6 的 class 类必须用 new 命令操作,而 ES5 的构造函数不用 new 也可以执行。
3、ES6 的 class 类不存在变量提升,必须先定义 class 之后才能实例化,不像 ES5 中可以将构造函数写在实例化之后。
4、ES5 的继承,实质是先创造子类的实例对象 this,然后再将父类的方法添加到 this 上面。ES6 的继承机制完全不同,实质是先将父类实例对象的属性和方法,加到 this 上面(所以必须先调用 super 方法),然后再用子类的构造函数修改 this。