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?

questionAnswers(6)

yourAnswerToTheQuestion