ES5 / ES6 的继承除了写法以外还有什么区别

简介: ES5 / ES6 的继承除了写法以外还有什么区别

ES5 的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到 this 上(Parent.apply(this))

  • ES6 的继承机制完全不同,实质上是先创建父类的实例对象 this(所以必须先调用父类的 super()方法),然后再用子类的构造函数修改 this。
  • ES5 的继承时通过原型或构造函数机制来实现。
  • ES6 通过 class 关键字定义类,里面有构造方法,类之间通过 extends 关键字实现继承。
  • 子类必须在 constructor 方法中调用 super 方法,否则新建实例报错。因为子类没有自己的 this 对象,而是继承了父类的
    this 对象,然后对其进行加工。如果不调用 super 方法,子类得不到 this 对象。
  • 注意 super 关键字指代父类的实例,即父类的 this 对象。
  • 注意:在子类构造函数中,调用 super 后,才可使用 this 关键字,否则报错。function 声明会提升,但不会初始化赋值。Foo
    进入暂时性死区,类似于 let、const 声明变量


相关文章
ES6学习(10)ES6的继承
ES6学习(10)ES6的继承
|
2月前
|
JavaScript 前端开发 Java
ES6新特性(六):类
ES6新特性(六):类
|
5月前
ES5、ES6类的定义
ES5和ES6都支持类的定义,但ES6引入了更简洁的语法。在ES5中,类是函数,方法绑定在原型上;而ES6使用`class`关键字,构造方法为`constructor`,方法直接定义在类内。ES6的类继承使用`extends`关键字,子类需调用`super`初始化父类属性。示例展示了Person类及其Student子类的定义和方法调用。
29 1
|
10月前
ES6学习(十一)—Class 的基本语法和继承
ES6学习(十一)—Class 的基本语法和继承
|
11月前
ES5的继承和ES6的继承有什么区别
ES5的继承和ES6的继承有什么区别
50 0
ES6: Symbol概念与用法举例
ES6: Symbol概念与用法举例
44 0
|
JavaScript
面试题-TS(四):如何在 TypeScript 中使用类和继承?
在TypeScript中,类是一种重要的概念,它允许我们使用面向对象的编程风格来组织和管理代码。类提供了一种模板,用于创建具有相同属性和行为的对象。通过继承,我们可以创建类之间的层次结构,实现代码的重用和扩展。
|
JavaScript
【ES6】类
【ES6】类
53 0