← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 19

Prototype chain

__proto__, Object.create, pewarisan berbasis prototype.

Pahami konsepnya

Setiap objek JavaScript punya prototype — objek lain tempat ia mencari properti yang tidak dimilikinya. Rantai pencarian ini disebut prototype chain: objek → prototype → prototype dari prototype → ... → null. Inilah pewarisan JavaScript: BUKAN class-based seperti Java, melainkan prototype-based.

Object.create(proto) membuat objek baru dengan prototype yang ditentukan: const anak = Object.create(induk). Properti yang tidak ditemukan di anak dicari di induk. __proto__ adalah properti internal untuk melihat/mengubah prototype (deprecated untuk produksi, tapi berguna untuk belajar).

Saat kamu menulis class di JavaScript, yang terjadi di balik layar tetap prototype chain — class adalah gula sintaksis di atas prototypal inheritance yang sudah ada.

Coba contoh kode

const induk = { sapa() { return "Halo!"; } };
const anak = Object.create(induk);
anak.nama = "Ari";

console.log(anak.nama);       // sendiri
console.log(anak.sapa());     // dari prototype
console.log(Object.getPrototypeOf(anak) === induk);  // true

// prototype chain
grandChild = Object.create(anak);
console.log(grandChild.sapa());  // naik 2 tingkat ke induk
console.log(grandChild.nama);     // naik 1 tingkat ke anak

anak tidak punya sapa — JavaScript naik ke induk dan menemukannya. grandChild naik dua tingkat: ke anak (nama) dan ke induk (sapa). Inilah prototype chain.

Latihan singkat

Uji: Object.create({x:42}) → akses .x, harus `42`.