Bir üst öğeden miras alan özelliklerine sahip olmaya çalışıyorum ancak bunu doğru şekilde yapma konusunda net değilim.JS'de prototip kalıtım ve üst özelliklerin nasıl edinileceği
var Animal = function(name){
this.offspring = [];
this.name = name;
return this;
}
Animal.prototype.createOffspring = function(name){
name = name || 'Baby '+(this.offspring.length+1);
this.offspring.push(name);
return this;
}
Şimdi bu yüzden elle ebeveynden şeyi eklemek gerekmez bir alt prototip devralma eklemek istiyorum:
Ben düşünelim. Örneğin, bir Animal
var pet = new Cat('Kitty');
pet.createOffspring();
olsaydı gibi el Cat name
ve createOffspring
eklemek zorunda olmadan, bu yapmak istiyorum ben Animal
bir Cat
tabanlı eklemek istediğiniz Diyelim constructor
gerçekten sadece bir Animal
, ancak bazı diğer ek işlevsellik ile (.meow()
veya bir şey gibi).
Bunu test etmem gerekiyor, ama _not_ 'this.name' işlemini yinelemek zorundayım, çünkü _all_ hayvanları bir ada sahip olacak, 'this.name =' Bir kedi '; 'kaldırılabiliyor olmalı ve 'cat.name'' bir hayvan ' –
Ah, geri dönmelidir. Sizi yanlış cevapla yanlış yönlendiriyorum: Animal.prototype ayarlanmadı, bu yüzden 'cat.name' bir istisna verecekti. Doğru yol, örnek dinamik olarak oluşturulduğunda, bir protoma bir nesne atamaktır: 'Cat.prototype = Object.create (yeni Animal())' –
Bu beni doğru yönde yakaladı ve çok teşekkür ederim. Maalesef bu garip görünmektedir tek şey 'Cat.prototype.constructor = Kedi o vardır :) çok uzun sürdü;' ya değil kodda aynı şekilde çalışır ve hala 'instanceof' üzerinde' TRUE olsun s. Ayrıca 'Object.create()' satırı 'cat.name' undefined yapar. http://jsbin.com/uhogig/edit#javascript,html –