Terjemahan ini belum lengkap. Mohon bantu menerjemahkan artikel ini dari Bahasa Inggris.

Kata kunci extends digunakan pada class declarations atau class expressions untuk membuat sebuah class yang merupakan turunan dari class lain.

Sintaks

class ChildClass extends ParentClass { ... }

Deskripsi

Kata kunci extends dapat digunakan untuk subclass custom classes dan built-in objects.

.prototype dari suatu ekstensi harus berupa sebuah Object atau null.

Contoh

Menggunakan extends

Contoh pertama membuat sebuah class bernama Square dari kelas bernama Polygon. Contoh ini diambil dari live demo (source).

class Square extends Polygon {
  constructor(length) {
    // Disini, obyek dari Square memanggil konstruktor dari parent class dengan argumen lengths yang tersedia
    // untuk width dan height pada Polygon 
    super(length, length);
    // Catatan: Pada kelas turunan, super() harus dipanggil sebelum Anda
    // dapat menggunakan 'this'. Pengabaian terhadap hal tersebut akan menyebabkan reference error.
    this.name = 'Square';
  }

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

Menggunakan extends dengan built-in objects

Contoh berikut mewarisi built-in Date object. Contoh ini diambil dari 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();
  }
}

Extending (Pewarisan) null

Extending/pewarisan dari null bekerja layaknya seperti normal class, dengan pengecualian prototype object tidak mewarisi dari Object.prototype.

class nullExtends extends null {
  constructor() {}
}

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

new nullExtends(); //ReferenceError: this is not defined

Spesifikasi

Spesifikasi Status Komentar
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'extends' in that specification.
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
The definition of 'extends' in that specification.
Draft  

Kompatibilitas peramban

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
extendsChrome Full support 49
Notes
Full support 49
Notes
Notes From Chrome 42 to 48 strict mode is required. Non-strict mode support can be enabled using the flag "Enable Experimental JavaScript".
Edge Full support 13Firefox Full support 45IE No support NoOpera Full support 36Safari Full support 9WebView Android ? Chrome Android Full support YesEdge Mobile Full support 13Firefox Android Full support 45Opera Android ? Safari iOS Full support 9Samsung Internet Android Full support Yesnodejs Full support 6.0.0
Full support 6.0.0
Full support 4.0.0
Disabled
Disabled From version 4.0.0: this feature is behind the --use_strict runtime flag.
Full support 5.0.0
Disabled
Disabled From version 5.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.
User must explicitly enable this feature.
User must explicitly enable this feature.

Cek juga

Tag Dokumen dan Kontributor

Kontributor untuk laman ini: kbkesit
Terakhir diperbarui oleh: kbkesit,