--- title: extends slug: Web/JavaScript/Reference/Classes/extends tags: - ECMAScript 2015 - JavaScript - Kelas translation_of: Web/JavaScript/Reference/Classes/extends ---
Kata kunci extends
digunakan pada class declarations atau class expressions untuk membuat sebuah class yang merupakan turunan dari class lain.
Sumber kode dari contoh interaktif ini disimpan di repositori GitHub. Jika Anda tertarik untuk berkontribusi dengan proyek contoh interaktif, silahkan menduplikasi repositori https://github.com/mdn/interactive-examples dan kirimkan ke kami dengan pull request.
class ChildClass extends ParentClass { ... }
Kata kunci extends
dapat digunakan untuk subclass custom classes dan built-in objects.
.prototype
dari suatu ekstensi harus berupa sebuah {{jsxref("Object")}} atau {{jsxref("null")}}.
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; } }
extends
dengan built-in objectsContoh berikut mewarisi built-in {{jsxref("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(); } }
null
Extending/pewarisan dari {{jsxref("null")}} bekerja layaknya seperti normal class, dengan pengecualian prototype object tidak mewarisi dari {{jsxref("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 | Status | Komentar |
---|---|---|
{{SpecName('ES2015', '#sec-class-definitions', 'extends')}} | {{Spec2('ES2015')}} | Initial definition. |
{{SpecName('ESDraft', '#sec-class-definitions', 'extends')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.classes.extends")}}