目录
- ES5 继承
- ES6 继承
- TS for ES5 继承
- 总结
ES5 继承
函数声明会提升,同时也会赋值,在定义前可用
继承采用 Object.prototype 方式
ES6 继承
class
声明会提升,但不会赋值,在定义前不可用。类似 let const 声明变量class
声明内部会启用严格模式class
的所有方法(包括静态方法和实例方法)都是不可枚举class
继承采用 extends 方式
TS for ES5 继承
采用 class
定义方式 extends
继承方式,其实是中语法糖,最终代码会采用 prototype 方式
问答
ES5/ES6 的继承除了写法外还有什么区别?
ES5 会自动变量定义提升,且在定义前可用。继承基于原型链 prototype 实现
ES6 在定义前不可用,继承方式未知(猜测基于原型链)