MST

星途 面试题库

面试题:JavaScript子类继承中super关键字的作用及使用场景

在JavaScript的子类继承场景下,super关键字可以在哪些地方使用?它在不同使用场景下分别代表什么含义,发挥怎样的作用?请结合代码示例进行说明。
26.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 在子类构造函数中使用
    • 含义与作用:在子类构造函数中,super() 用于调用父类的构造函数。这是在JavaScript子类继承中初始化继承自父类的属性所必需的步骤。在调用 super() 之前,this 关键字在子类构造函数中是不可用的。
    • 代码示例
class Animal {
    constructor(name) {
        this.name = name;
    }
}

class Dog extends Animal {
    constructor(name, breed) {
        super(name);
        this.breed = breed;
    }
}

let myDog = new Dog('Buddy', 'Golden Retriever');
console.log(myDog.name); // 输出: Buddy
console.log(myDog.breed); // 输出: Golden Retriever
  1. 在子类的方法中使用
    • 含义与作用:在子类的方法中,super 关键字用于访问和调用被当前子类覆盖的父类方法。这使得子类可以复用父类的方法逻辑,并在此基础上进行扩展。
    • 代码示例
class Animal {
    speak() {
        return 'I am an animal';
    }
}

class Dog extends Animal {
    speak() {
        let parentSpeak = super.speak();
        return `${parentSpeak} and I am a dog`;
    }
}

let myDog = new Dog();
console.log(myDog.speak()); 
// 输出: I am an animal and I am a dog