ES6中class继承为什么一定要写super()?super代表什么?

在ES6中,class 关键字用于定义一个类,而 extends 关键字则用于实现类之间的继承。当一个类继承自另一个类时,子类的构造函数中必须调用 super() 方法。这是因为 super() 实际上调用了父类的构造函数,以确保父类中的属性和方法能够被正确地初始化并继承到子类中。

super 关键字在类继承中有两个主要的用途:

  1. 调用父类的构造函数:在子类的构造函数中,super() 用于调用父类的构造函数。这是必需的,因为在子类构造函数中,this 关键字引用的是子类的一个实例。在调用 super() 之前,this 还不是一个完全初始化的对象,因此你不能在调用 super() 之前引用 this

例如:

class Parent {
  constructor(name) {
    this.name = name;
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类的构造函数,并传递参数
    this.age = age; // 在调用 super() 之后,可以安全地使用 this
  }
}
  1. 访问父类的方法:在子类中,你可以使用 super 关键字来调用父类的方法。这允许你在重写父类方法的同时,仍然能够访问和调用父类的原始实现。

例如:

class Parent {
  sayHello() {
    console.log('Hello from Parent');
  }
}

class Child extends Parent {
  sayHello() {
    super.sayHello(); // 调用父类的 sayHello 方法
    console.log('Hello from Child');
  }
}

总的来说,super 关键字在ES6类继承中扮演着连接父类和子类的重要角色。它确保父类的属性和方法能够正确地初始化并继承到子类中,同时也允许子类在需要时访问和调用父类的方法。

posted @ 2024-12-27 09:07  王铁柱6  阅读(171)  评论(0)    收藏  举报