📅  最后修改于: 2023-12-03 14:42:27.291000             🧑  作者: Mango
Javascript Super指的是使用super关键字调用父类中对应方法和属性的技术。在ES6中,该功能被引入以提高javascript语言的继承能力。
在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()是两个不同的东西。前者用于在子类的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.”。
Javascript Super可以提高Javascript语言的继承能力,简化开发过程中的复杂性。在ES6中引入的super关键字,使得类继承更加清晰、简洁易懂。