В 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 позволяет нам эффективно и кратко создавать классы, которые наследуют свойства и методы других классов, что делает наш код более организованным и легко поддерживаемым.