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的继承
|
3月前
|
安全
ES5/ES6 的继承除了写法以外还有什么区别
ES5 和 ES6 的继承主要区别在于实现机制和语法糖。ES5 通过原型链和构造函数模拟类的继承,而 ES6 引入了 class 关键字,使继承更加直观和简洁,支持 super 调用父类方法,提升了代码可读性和维护性。
|
8月前
|
前端开发
es6的一些方法
es6的一些方法
45 0
|
8月前
ES5、ES6类的定义
ES5和ES6都支持类的定义,但ES6引入了更简洁的语法。在ES5中,类是函数,方法绑定在原型上;而ES6使用`class`关键字,构造方法为`constructor`,方法直接定义在类内。ES6的类继承使用`extends`关键字,子类需调用`super`初始化父类属性。示例展示了Person类及其Student子类的定义和方法调用。
53 1
|
8月前
ES6学习之对象
ES6学习之对象
|
8月前
es6学习笔记(三)对象
es6学习笔记(三)对象
ES5的继承和ES6的继承有什么区别
ES5的继承和ES6的继承有什么区别
81 0
|
JavaScript
ES6的基础用法
对js es6的用法进行简单介绍
|
JavaScript
【ES6】类
【ES6】类
61 0