Materi
Class adalah cetakan untuk membuat banyak objek dengan bentuk dan perilaku yang sama. constructor dijalankan sekali setiap kali objek dibuat dengan new, dan di dalamnya this menunjuk objek baru itu. Method yang ditulis di badan class dipakai bersama oleh semua objek hasil class tersebut.
class Tabungan {
constructor(pemilik, saldo = 0) {
this.pemilik = pemilik;
this.saldo = saldo;
}
setor(n) {
this.saldo += n;
return this.saldo;
}
}
class TabunganBerjangka extends Tabungan {
constructor(pemilik, saldo, bulan) {
super(pemilik, saldo);
this.bulan = bulan;
}
}
const t = new TabunganBerjangka("Dina", 100000, 12);
t.setor(50000); // 150000, method diwarisi dari Tabungan
Object.getPrototypeOf(t) === TabunganBerjangka.prototype; // trueMethod tidak disalin ke setiap objek. Ia disimpan di objek prototype milik class, dan setiap objek hasil new menaut ke prototype itu. Saat t.setor dibaca, JavaScript mencari setor di t, tidak menemukannya, lalu naik ke prototype TabunganBerjangka, lalu ke prototype Tabungan. Jalur naik ini disebut rantai prototype, dan itulah yang dikerjakan extends: menyambungkan prototype class turunan ke prototype class induk. Di constructor class turunan, super(...) menjalankan constructor induk.
Class dipakai ketika banyak objek berbagi perilaku dan menyimpan keadaan masing-masing, seperti rekening, keranjang, atau voucher. Untuk data tanpa perilaku, objek biasa sudah cukup.