📜  javascript super - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:27.291000             🧑  作者: Mango

Javascript Super

Javascript Super指的是使用super关键字调用父类中对应方法和属性的技术。在ES6中,该功能被引入以提高javascript语言的继承能力。

继承中的super

在Javascript中的继承,使用extends关键字定义一个子类,父类则通过constructor()方法来定义实例属性和方法。在子类中,使用super关键字来调用父类中对应的方法或属性。

class Parent {
  constructor(name) {
    this.name = name;
  }
  
  greet() {
    console.log(`Hello, ${this.name}!`);
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name); //调用父类的constructor方法
    this.age = age;
  }
  
  introduce() {
    console.log(`My name is ${this.name}, and I am ${this.age} years old.`);
  }
}

let child = new Child('Alice', 10);
child.greet(); //输出: Hello, Alice!
child.introduce(); //输出: My name is Alice, and I am 10 years old.

在上述代码中,Child中的constructor方法中使用了super(name)来调用父类的构造方法,并将父类的name属性赋值为传入的参数name。在Child的introduce方法中,直接通过this.name和this.age来访问父类和子类的属性。

super()和super.method()

super()和super.method()是两个不同的东西。前者用于在子类的constructor方法中调用父类的构造函数,后者用于在子类中调用父类中对应的方法。

class Parent {
  greet() {
    console.log('Hello, world!');
  }
}

class Child extends Parent {
  greet() {
    super.greet(); //调用父类的greet方法
    console.log('My name is Alice.');
  }
}

let child = new Child();
child.greet(); //输出: Hello, world! My name is Alice.

在上述代码中,Child类的greet方法中使用了super.greet()来调用父类的greet方法,并在结束后输出“I am Alice.”。

Conclusion

Javascript Super可以提高Javascript语言的继承能力,简化开发过程中的复杂性。在ES6中引入的super关键字,使得类继承更加清晰、简洁易懂。