ES6中的关键字super该如何理解?
问题描述:ES6中的关键字super该如何理解?
推荐答案 本回答由问问达人推荐
super关键字是ES6新增的关键字,用于在子类中调用父类的构造函数和成员方法。在ES6之前,JavaScript中的继承通常是通过原型链实现的,这种继承方式的缺点是在子类中无法直接访问父类的构造函数和成员方法。
使用super关键字可以轻松实现在子类中调用父类的构造函数和成员方法。super关键字用于指代当前对象所继承的父对象,通过super关键字可以访问父类的成员。
具体来说,super可以做两件事情:
1. 调用父类构造函数:使用super()可以在子类中调用父类的构造函数,并传递参数。例如:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
class Student extends Person {
constructor(name, age, grade) {
super(name, age); // 调用父类构造函数
this.grade = grade;
}
}
let student = new Student("Tom", 18, "A");
在上面的代码中,子类Student通过调用super(name, age)方法来调用父类Person的构造函数,以实现继承父类的成员变量name和age。
2. 调用父类成员方法:使用super.methodName()可以在子类中调用父类的成员方法。例如:
class Person {
hello() {
console.log(`Hello, ${this.name}`);
}
}
class Student extends Person {
hello() {
super.hello(); // 调用父类方法
console.log(`I am a student of grade ${this.grade}`);
}
}
let student = new Student("Tom", 18, "A");
student.hello();
在上面的代码中,子类Student通过调用super.hello()方法来调用父类Person的成员方法hello(),以实现继承父类的行为。在子类中可以重写父类的成员方法,并通过使用super关键字来调用父类的成员方法,从而实现扩展或重用父类的代码。
查看其它两个剩余回答