目录

  • 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 在定义前不可用,继承方式未知(猜测基于原型链)