Javascript 继承(超级)

Javascript Inheritance (super)

我正在浏览 JS 继承文档,我看到了一个新的“功能”(对我来说),称为 super,关键字 super。好吧,据我所知,如果我有一个父 class,例如 hospitalStaff,参数是姓名和员工编号,继承的 class 被称为 nurse,并且上面还有参数名称,还有其他参数。所以,在这个例子中,我将只使用 super(name);,不是吗?

感谢帮助!!祝你有美好的一天,编码愉快!

是的,您会将参数传递给 super 函数。通过在 Nurse 构造函数中调用 super,您可以在 HospitalStaff 中调用构造函数并传递参数。

在下面的示例中,Nurse class 也有 sayName 方法。所有方法(包括构造函数)都继承自父类 class.

但是,如果您的 Nurse 构造函数不同于 HospitalStaff 的构造函数,那么您需要创建一个新的构造函数,该构造函数也使用 super 调用父构造函数。如果不调用 super,您只会覆盖子构造函数。试试看,它仍然有效。但是您不会拥有 namestaffNumber 属性。

同样适用于可以使用 super 从父级调用方法的方法。这样您就可以覆盖子项的方法,但仍保留父项对该方法的实现。

class HospitalStaff {
  constructor(name, staffNumber) {
    this.name = name;
    this.staffNumber = staffNumber;
  }
  sayName() {
    console.log(`Name: ${this.name}`);
    console.log(`Number: ${this.staffNumber}`);
  }
}

class Nurse extends HospitalStaff {
  constructor(name, staffNumber, field) {
    super(name, staffNumber); // Sets name and staffNumber properties
    this.field = field; // Adds a field property
  }
  sayName() {
    super.sayName();
    console.log(`Field: ${this.field}`);
  }
}

const bob = new HospitalStaff('bob', 43);
bob.sayName();

const julie = new Nurse('Julie', 120, 'pediatrics');
julie.sayName();