JS Prototypes Classes Inheritance
Ringkasan
JS menggunakan prototype-based inheritance. class adalah gula sintaks di atas prototype.
Konsep Dasar
- Tiap objek punya
[[Prototype]](akses via__proto__/Object.getPrototypeOf). - Property dicari naik rantai prototype kalau tak ada di objek sendiri.
class/extends/super— sintaks OOP di atas prototype.
Cara Kerja / Struktur
class Animal {
constructor(name){ this.name = name; }
speak(){ return `${this.name} bersuara`; }
}
class Dog extends Animal {
speak(){ return `${this.name} menggonggong`; }
}
new Dog("Rex").speak(); // "Rex menggonggong"Catatan Implementasi
classtidak hoisted seperti function declaration; butuh definisi dulu.- Method di class otomatis di prototype, bukan di instance.
Kesalahan Umum
- Mengira
class= classical inheritance seperti Java (tetap prototype di bawah). super()lupa dipanggil di constructor subclass.
Glosarium
- Prototype chain: rantai pencarian property.
- Syntactic sugar: class hanyalah cara lebih rapi untuk prototype.