CodeBlanks Logo Icon CodeBlanks

Özet - Prototipler

JavaScript kursu · İleri seviye · Ders 18/100

Object.create ve prototype zincirini kullanarak bir hayvan miras yapısını yazarsın.

Özet - Prototipler

Bu grupta prototipleri öğrendin. Her nesne bir prototipe bağlıdır; Object.getPrototypeOf ile okunur, Object.create ile yeni nesne kurulur. Prototip zinciri özellik aramayı yukarı taşır; hasOwnProperty ile kendi özelliklerini süzersin.

Şimdi bunları bir araya getiren bir hayvan miras yapısı kuracağız: animalProto taban, dogProto ondan türeyen alt katman, rex ise somut nesne.

Uygulama Hayvan miras zincirini kur

animalProto nesnesini tanımla; describe metodu 'bir hayvanım' döndürsün. dogProto'yu Object.create(animalProto) ile üret ve dogProto.bark'a bir işlev ekle: 'hav' döndürsün. rex'i Object.create(dogProto) ile üret; sonra rex.name = 'Rex' ile kendi özelliğini ata. for...in ile rex'in anahtarlarını dolaş; rex.hasOwnProperty(key) doğruysa console.log(key) çağır. Son olarak console.log(rex.describe()), console.log(rex.bark()) ve console.log(Object.getPrototypeOf(rex) === dogProto) çağrılarını yap.

Örnek çözümü göster
const animalProto = {
  describe() {
    return 'bir hayvanım';
  }
};
const dogProto = Object.create(animalProto);
dogProto.bark = function () {
  return 'hav';
};
const rex = Object.create(dogProto);
rex.name = 'Rex';
for (const key in rex) {
  if (rex.hasOwnProperty(key)) {
    console.log(key);
  }
}
console.log(rex.describe());
console.log(rex.bark());
console.log(Object.getPrototypeOf(rex) === dogProto);

Son notlar

Prototipler JavaScript'in miras mekanizmasıdır. Yeni kodlarda class sözdizimi de yaygın olsa da arka planda yine prototipler çalışır. Object.create ile zincir kurmak, hasOwnProperty ile süzmek ve Object.getPrototypeOf ile okumak güvenli alışkanlıklardır.

Prototipi doğrudan değiştirmekten (örneğin Object.prototype.x = ...) kaçın; bu tüm nesneleri etkiler ve beklenmedik davranışlara yol açar.

Kendini test et

  1. Hangi yöntem yeni bir nesneyi var olan prototiple üretir?

    • Object.create(proto)
    • Object.getPrototypeOf(proto)
    • Object.keys(proto)
    • Object.setPrototypeOf(proto)
    Cevabı göster

    Object.create(proto) — Doğru! Object.create tam olarak bunu yapar.

  2. dogProto'yu Object.create ile üret

    const dogProto = Object.____;
    Cevabı göster
    const dogProto = Object.create(animalProto);
  3. Tüm prototip kavramlarını eşleştir

    Object.create
    yeni nesne + prototip
    Object.getPrototypeOf
    prototip okuma
    hasOwnProperty
    kendi özellik kontrolü
    prototype zinciri
    özellik arama yolu

İleri seviye bölümündeki tüm dersler