JavaScript'te Prototype Inheritance ve Prototype Chain
JavaScript'te Prototype Inheritance ve Prototype Chain, nesne tabanlı programlama modelinde önemli bir kavramdır ve JavaScript'in nesne tabanlı yapısının temelini oluşturur.
Prototype Inheritance (Prototip Mirası)
JavaScript'te her nesne bir prototipe (prototype) sahiptir. Prototip, bir nesnenin özelliklerini ve metotlarını diğer nesnelere miras olarak aktarmak için kullanılır. Bir nesnenin prototipi, o nesnenin metotlarını ve özelliklerini barındırır. Yani, bir nesne diğer bir nesnenin prototipini referans alabilir ve bu şekilde özellikleri ve metotları miras alabilir. Örneğin:
// Bir prototip oluşturma
let arac = {
marka: 'Audi',
model: 'A6',
hizlan: function() {
console.log('Araba hızlanıyor...');
}
};
// Yeni bir nesne oluşturma ve prototipini belirtme
let yeniArac = Object.create(arac);
console.log(yeniArac.marka); // Audi
yeniArac.hizlan(); // Araba hızlanıyor...
Bu örnekte, arac
isimli bir prototip nesne oluşturulmuş ve yeniArac
nesnesi bu prototipi miras alarak marka
ve hizlan
özelliklerini kullanmıştır.
Prototype Chain (Prototip Zinciri)
JavaScript'te her nesnenin bir prototip referansı vardır. Eğer bir özellik ya da metot bir nesnede bulunamazsa, JavaScript bu özelliği veya metodu o nesnenin prototipinden aramaya devam eder. Bu şekilde, bir nesnenin prototipi diğer bir nesnenin prototipi olabilir ve bu zincir uzayarak devam edebilir. Bu yapıya "Prototype Chain" denir. Örneğin:
// Bir prototip oluşturma
let arac = {
marka: 'Audi',
};
// Bir başka prototip oluşturma ve önceki prototipi miras alma
let otomobil = {
motor: '1200cc',
};
otomobil.__proto__ = arac;
console.log(otomobil.marka); // Audi
Bu örnekte, arac
ve otomobil
prototipleri oluşturulmuş ve otomobil
prototipi içinde marka
özelliği, arac
prototipinden miras alınmıştır. Bu şekilde Prototype Chain oluşturulmuştur.
Sonuç
JavaScript'te Prototype Inheritance ve Prototype Chain, nesne tabanlı programlamanın temel kavramlarıdır. Prototipler sayesinde nesneler arasında miras verme ve zincirleme bir yapı oluşturulabilir, bu da JavaScript'in esnekliğini ve gücünü arttırır. Bu kavramları anlayarak JavaScript'te daha etkili ve organize kodlar yazabilirsiniz.