在面向对象编程中,super是一个关键字,代表父类对象。super可以用来调用父类的属性和方法,也可以用来调用父类的构造函数。在JavaScript中,super可以在类中使用,通过使用super可以访问父类中的属性和方法,也可以在子类的构造函数中调用父类的构造函数。
super的使用方式:
- 访问父类的属性和方法
在子类中,可以使用super来访问父类中的属性和方法。例如:
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, ${this.name}`);
}
}
class Student extends Person {
constructor(name, grade) {
super(name);
this.grade = grade;
}
sayHello() {
super.sayHello();
console.log(`I am in grade ${this.grade}`);
}
}
const student = new Student('Tom', 5);
student.sayHello(); // 输出:Hello, Tom I am in grade 5
在上面的例子中,子类Student继承了父类Person的属性和方法。在子类中,可以通过super来调用父类的sayHello方法。
- 调用父类的构造函数
在子类的构造函数中,可以使用super来调用父类的构造函数。例如:
class Person {
constructor(name) {
this.name = name;
}
}
class Student extends Person {
constructor(name, grade) {
super(name);
this.grade = grade;
}
}
const student = new Student('Tom', 5);
console.log(student.name); // 输出:Tom
console.log(student.grade); // 输出:5
在上面的例子中,子类Student继承了父类Person的构造函数。在子类的构造函数中,通过super(name)调用了父类的构造函数,并传入了name参数。这样,子类Student就拥有了父类Person的name属性,同时还有自己的grade属性。
总结:
super关键字在JavaScript中的主要作用是用来访问父类的属性和方法,以及调用父类的构造函数。在子类中可以使用super来继承父类的属性和方法,并且可以通过super来调用父类的构造函数来实现初始化子类的过程。