This page was translated from English by the community.Learn more and join the MDN Web Docs community.
extends
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since март 2016 г..
Ключевое словоextends используется вобъявлении класса или ввыражениях класса для создания дочернего класса.
In this article
Синтаксис
class ChildClass extends ParentClass { ... }Описание
Ключевое словоextends может быть использовано для создания дочернего класса для уже существующего класса или встроенного объекта.
Свойство.prototype родительского класса или объекта должно бытьObject илиnull.
Примеры
>Использованиеextends
В первом примере создаётся дочерний класс с именемSquare от класса с именемPolygon. Этот пример был взят изlive demo(source).
class Square extends Polygon { constructor(length) { // Здесь вызывается конструктор родительского класса, // в который передаётся свойство length в качестве // аргументов, соответствующих полям width и height, // класса Polygon super(length, length); // Примечание: // В конструкторе класса, метод super() должен быть вызван // перед использованием this. В противном случае, будет // выброшена ошибка. this.name = "Square"; } get area() { return this.height * this.width; }}Расширение встроенных объектов с помощьюextends
Этот пример расширяет встроенный объектDate. Пример взят изlive demo(source).
class myDate extends Date { constructor() { super(); } getFormattedDate() { var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ]; return ( this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear() ); }}Расширениеnull
Расширениеnull работает как и с обычным классом, за исключением того, что прототип объекта не наследуетObject.prototype.
class nullExtends extends null { constructor() {}}Object.getPrototypeOf(nullExtends); // Function.prototypeObject.getPrototypeOf(nullExtends.prototype); // nullnew nullExtends(); //ReferenceError: this is not definedСпецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-class-definitions> |