В ES6 (ECMAScript 6) для создания класса, который наследует другой класс, правильное объявление осуществляется с помощью ключевого слова extends. Общий формат выглядит следующим образом:
class SubClass extends BaseClass {}
Это говорит интерпретатору JavaScript, что новый класс SubClass собирается наследовать все свойства и методы класса BaseClass.
Рассмотрим пример для ясности:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} издает звук.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} лает.`);
}
}
const dog = new Dog('Барбос');
dog.speak(); // Вывод: "Барбос лает."
В данном примере класс Dog расширяет класс Animal. Мы переопределяем метод .speak() в классе Dog, поэтому когда мы вызываем .speak() для объекта dog, он использует версию метода, определённую в Dog, а не ту, которая определена в Animal.
Остальные представленные в вопросе ответы некорректны. Ключевое слово inherits и синтаксис SubClass: BaseClass {} не являются действительными в ES6. Выражение SubClass.prototype = new BaseClass(); является устаревшим способом наследования в JavaScript и считается неэффективным с введением классов в ES6.
Использование extends в ES6 позволяет нам эффективно и кратко создавать классы, которые наследуют свойства и методы других классов, что делает наш код более организованным и легко поддерживаемым.