Dziedziczenie JavaScript; zadzwoń i prototyp
Aby zaimplementować dziedziczenie w JavaScript, zazwyczaj wykonuje się następujące 2 kroki;
Powiedz, że mam klasę bazową „Animal”
var Animal = function(name){
this.name = name;
}
Chcę teraz wyprowadzić z tej samej klasy „Dog”. Tak bym powiedział
var Dog = function(name) {
Animal.call(this,name);
}
Wywołuję więc mój konstruktor klasy nadrzędnej z mojego konstruktora klasy pochodnej. Drugim krokiem jest ustawienie prototypu w następujący sposób;
Dog.prototype = new Animal();
Teraz mogę uzyskać dostęp do dowolnej podstawowej właściwości klasy „Animal” z mojej klasy pochodnej Dog.
Moje pytanie brzmi: dlaczego te 2 kroki są konieczne? Jeśli po prostu wywołamy konstruktor klasy bazowej używając
Animal.call(this,name);
czy to nie wystarczy do wdrożenia dziedziczenia?
Dlaczego myrównież należy ustawić właściwość prototypu za pomocąDog.prototype = new Animal();
?
Chciałem zrozumieć, co robi każdy z powyższych dwóch kroków?