Sobes.tech
Middle

JavaScript'te prototipler nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te nesneler, prototip mekanizması aracılığıyla diğer nesnelerden özellikler ve metodlar miras alabilir. JavaScript'teki her nesne, başka bir nesneye işaret eden içsel gizli bir özelliğe [[Prototype]] sahiptir. Bir nesnenin özelliğine veya metoduna erişildiğinde, JavaScript motoru önce onu nesnede arar. Bulamazsa, [[Prototype]] özelliğine bakar ve prototipte arama yapar. Bu süreç, özellik bulunana veya null (zincirin sonu) ulaşılana kadar prototip zinciri boyunca tekrarlanır.

Ana kavramlar:

  • Prototip zinciri: [[Prototype]] özelliğiyle bağlı nesnelerin dizisi.
  • Miras: Nesneler, prototiplerinin özelliklerini ve metodlarını miras alır.
  • __proto__: Tarihsel olarak kullanılan (başlangıçta standart olmayan) [[Prototype]] erişimi için özellik. Günümüzde Object.getPrototypeOf() kullanımı tercih edilir.
  • prototype: Bu yapıcı fonksiyonun [[Prototype]]'una referans veren özellik, ve bu prototipten türeyen örnekler tarafından kullanılır.

Prototip ve yapıcı fonksiyon örneği:

// Yapıcı fonksiyon
function Person(name, age) {
  this.name = name;
  this.age = age;
}

// Prototipe metod ekleme
Person.prototype.sayHello = function() {
  console.log("Merhaba, benim adım " + this.name);
};

// Örnek oluşturma
const person1 = new Person("Alice", 30);

// Prototip metodunu çağırma
person1.sayHello(); // Çıktı: Merhaba, benim adım Alice

// Örnek prototipine erişim
console.log(Object.getPrototypeOf(person1) === Person.prototype); // Çıktı: true

Bu örnekte:

  • Person bir yapıcı fonksiyondur.
  • Person.prototype, new Person() ile oluşturulan tüm örneklerin prototipidir.
  • sayHello, prototipe eklenmiş bir metodtur. Tüm Person örnekleri bu metodu miras alır.
  • person1.sayHello() çağrıldığında, JavaScript motoru sayHello'yu person1'de arar. Bulamazsa, person1'in [[Prototype]]'una (yani Person.prototype) bakar ve metod burada bulunur.

Prototipler, bellek kullanımını verimli hale getirir çünkü ortak metodlar ve özellikler prototipte saklanır, her nesne örneğinde tekrar edilmezler.