CodeBlanks Logo Icon CodeBlanks

Prototype nedir?

JavaScript kursu · İleri seviye · Ders 13/100

Her nesnenin bağlı olduğu prototype nesnesini ve paylaşılan davranışı öğrenirsin.

Prototype nedir?

JavaScript'te her nesne, prototype adı verilen başka bir nesneye bağlanır. Bu bağ sayesinde nesneler, prototipte tanımlı davranışları paylaşır. Bir özelliğe erişince önce nesnenin kendisine, sonra prototipine bakılır.

function Animal(name) {
  this.name = name;
}
Animal.prototype.describe = function () {
  return this.name + ' bir hayvandır';
};

Böylece her Animal nesnesi tek bir describe işlevini ortak kullanır.

Neden prototype kullanılır?

Her nesneye aynı metodu ayrı ayrı eklersen, her nesne kendi kopyasını taşır. Bu, bellek israfına yol açar. prototype üzerine eklediğin metot ise tek kopya olarak durur ve tüm nesneler ona erişir.

function Animal(name) { this.name = name; }
Animal.prototype.describe = function () {
  return this.name;
};

Bu desen, yüzlerce nesne üretsen de bellekte tek bir işlev kalmasını sağlar.

Uygulama Animal constructor ve prototype metodunu yaz

Animal adında bir constructor tanımla. name parametresini alıp this.name'e atasın. Sonra Animal.prototype.describe'a bir işlev ekle: this.name + ' bir hayvandır' dizesini döndürsün. rex adında new Animal('Rex') ile bir nesne oluştur ve console.log(rex.describe()) çağrısı yap.

Örnek çözümü göster
function Animal(name) {
  this.name = name;
}
Animal.prototype.describe = function () {
  return this.name + ' bir hayvandır';
};
const rex = new Animal('Rex');
console.log(rex.describe());

Kendini test et

  1. Animal.prototype.describe neyi sağlar?

    const rex = new Animal('Rex');
    rex.describe(); // 'Rex bir hayvandır'
    • Her Animal nesnesi için ayrı bir işlev oluşturur
    • Tüm Animal nesnelerinin paylaştığı tek işlevi tanımlar
    • Sadece ilk Animal nesnesinin kullanabildiği bir işlevdir
    • name özelliğini gizler
    Cevabı göster

    Tüm Animal nesnelerinin paylaştığı tek işlevi tanımlar — Doğru! prototype üzerindeki metot tüm nesneler tarafından paylaşılır.

  2. describe metodunu tamamla

    Animal.prototype.describe = function () {
      return this.name + ____;
    };
    Cevabı göster
    Animal.prototype.describe = function () {
      return this.name + ' bir hayvandır';
    };
  3. Prototype terimlerini eşleştir

    prototype
    paylaşılan davranış
    __proto__
    nesnenin bağlantısı
    constructor
    nesne üreten işlev
    new
    yeni nesne oluşturma

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