September 17, 2026
Memahami Prototype dan Inheritance di JavaScript.
Cara kerja prototype chain di balik objek JavaScript, serta bagaimana class modern sebenarnya hanyalah sintaks lain dari prototype.
Berbeda dari bahasa berbasis kelas seperti Java, JavaScript memakai model pewarisan berbasis prototype. Memahami konsep ini membantu menjelaskan kenapa class di JavaScript berperilaku sedikit berbeda dari class di bahasa lain.
Setiap Objek Punya Prototype
const buah = { nama: "Apel" };
console.log(buah.toString()); // "[object Object]"
Method toString() tidak pernah didefinisikan langsung di buah, tapi tetap bisa dipanggil karena JavaScript mencarinya di prototype chain — rantai objek yang menjadi “induk” dari objek tersebut.
console.log(Object.getPrototypeOf(buah) === Object.prototype); // true
Membuat Prototype Sendiri
function Hewan(nama) {
this.nama = nama;
}
Hewan.prototype.bersuara = function () {
console.log(`${this.nama} mengeluarkan suara`);
};
const kucing = new Hewan("Kucing");
kucing.bersuara(); // "Kucing mengeluarkan suara"
Semua instance yang dibuat dari Hewan berbagi method bersuara yang sama lewat prototype, bukan menyalin method itu ke setiap objek — ini menghemat memori dibanding menaruh method langsung di dalam this.
Class: Sintaks Modern di Atas Prototype
class yang diperkenalkan di ES6 sebenarnya hanyalah syntactic sugar — tampilan lebih rapi dari mekanisme prototype yang sama di baliknya.
class HewanModern {
constructor(nama) {
this.nama = nama;
}
bersuara() {
console.log(`${this.nama} mengeluarkan suara`);
}
}
const anjing = new HewanModern("Anjing");
anjing.bersuara();
Inheritance dengan extends
class Kucing extends HewanModern {
bersuara() {
console.log(`${this.nama} berkata: Meong`);
}
}
const kucing2 = new Kucing("Kucing Oyen");
kucing2.bersuara(); // "Kucing Oyen berkata: Meong"
Kata kunci super() dipakai untuk memanggil constructor dari class induk saat class turunan butuh properti tambahan.
class KucingBerumur extends HewanModern {
constructor(nama, umur) {
super(nama);
this.umur = umur;
}
}
Kesimpulan
Di balik layar, setiap objek JavaScript terhubung lewat prototype chain, dan class modern hanyalah cara penulisan yang lebih familiar dari mekanisme tersebut. Memahami prototype membantu menjelaskan perilaku JavaScript yang kadang terasa berbeda dari bahasa berbasis kelas murni seperti Java atau C#.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.