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 anakanak 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`.