extends
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.
Ключевое словоextends
используется вобъявлении класса или ввыражениях класса для создания дочернего класса.
Синтаксис
class ChildClass extends ParentClass { ... }
Описание
Примеры
Использованиеextends
В первом примере создаётся дочерний класс с именемSquare
от класса с именемPolygon
. Этот пример был взят изlive demo(source).
js
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).
js
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
.
js
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 |