--- title: extends slug: Web/JavaScript/Reference/Classes/extends tags: - ECMAScript 2015 - JavaScript - Klasser translation_of: Web/JavaScript/Reference/Classes/extends ---
{{jsSidebar("Classes")}}

Nyckelorder extends används i klassdeklarationer eller klassuttryck för att skapa en klass som är barn till en annan klass.

Syntax

class ChildClass extends ParentClass { ... }

Beskrivning

Nyckelordet extends kan användas för att subklassa anpassade klasser såväl som inbyggda objekt.

.prototype vid användning av extends måste vara en {{jsxref("Object")}} eller {{jsxref("null")}}.

Exempel

Använda extends

Första exemplet skapar en klass som heter Square från en klass kallad Polygon. Exemplet är extraherat från denna live demo (källkod).

class Square extends Polygon {
  constructor(length) {
    // Här anropas föräldraklassens constructor med längd
    // angiven för Polygons bredd och höjd
    super(length, length);
    // Notera: i underliggande klasser, måste super() anropas innan du
    // kan använda 'this'. Utelämnande av detta kommer orsaka ett "reference error".
    this.name = 'Square';
  }

  get area() {
    return this.height * this.width;
  }

  set area(value) {
    this.height = this.width = Math.sqrt(value);
    this.area = value;
  }
}

Användning av extends med inbyggda objekt

Detta exempel utökar det inbyggda objektet {{jsxref("Date")}}. Exemplet är extraherat från denna live demo (källkod).

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();
  }
}

Utökning av null

Utökning från {{jsxref("null")}} fungerar som en normal klass, förutom att prototype objektet inte ärver från {{jsxref("Object.prototype")}}.

class nullExtends extends null {
  constructor() {}
}

Object.getPrototypeOf(nullExtends); // Function.prototype
Object.getPrototypeOf(nullExtends.prototype) // null

Specifikationer

Specifikation Status Kommentar
{{SpecName('ES6', '#sec-class-definitions', 'extends')}} {{Spec2('ES6')}} Initial definition.
{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}} {{Spec2('ESDraft')}}  

Browserkompabilitet

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatChrome(42.0)}} {{CompatGeckoDesktop(45)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Array subclassing {{CompatChrome(43.0)}} {{CompatNo}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Bassupport {{CompatNo}} {{CompatGeckoMobile(45)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatChrome(42.0)}}
Array subklassning {{CompatNo}} {{CompatNo}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatChrome(43.0)}}

Se även