JS'deki prototipsel mirasları anlıyorum ama sahip olduğum özel bir fikri göstermek için kod yazarken sorun yaşıyorum. Yönetici nesneleri Çalışan nesnelerden türetmek bu son derece basit bir senaryo düşünün:Prototipsiz prototip kalıtım mı?
function Employee()
{
this.name = "Axel";
this.dept = "R&D";
}
function Manager()
{
Employee.call(this);
this.reports = ["Report 1", "Report 2", "Report 3"];
}
console.log(new Manager());
çıktısı:
Manager {name: "Axel", dept: "R&D", reports: Array[3]}
Garibi, biz prototip mirası göstermede başardım geliyor bana. Ancak,
prototype
'u kullanmadığımız gerçekler beni rahatsız ediyor. Şüphesiz yukarıdaki kod bunu yapmanın yolu değil mi?
Birisi, yukarıdaki yaklaşımın başarısız olduğunu gösteren bir örnek sağlayabilir mi?
(Bu arada, örnek resmi Mozilla docs geliyor, eksi prototip ayarı: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model)
Yukarıdaki yaklaşımda bir sorun yok. Bu durumda, sadece bir * tek nesneyi * değiştirirsiniz, oysa prototip ile * tüm nesneleri * aynı prototiple değiştirebilirsiniz. – meskobalazs
@meskobalazs Korkarım klasik olarak eğitilmiş aklımı takip etmiyorum. Eğer bir 'yeni Yönetici()' yazıyorsam üç özelliği (isim, borç ve rapor) almaz mıyım? Bu şekilde, yolun aşağısında bulunan __all nesneler üzerinde değişiklik yapıldığı görülüyor. – dotslash
Burada hiç bir prototip veya prototipik miras kullanmıyorsunuz. Bunun yerine, doğrudan her bir nesneye özellikler yerleştiriyorsunuz. –