Javascript-Vererbung; Aufruf und Prototyp

Um die Vererbung in Javascript zu implementieren, führt man im Allgemeinen die folgenden 2 Schritte aus;

Angenommen, ich habe eine Basisklasse "Animal"

var Animal = function(name){
this.name = name;
}

Ich möchte nun eine Unterklasse "Hund" daraus ableiten. Also würde ich sagen

var Dog = function(name) {
   Animal.call(this,name);
}

Daher rufe ich meinen übergeordneten Klassenkonstruktor von meinem abgeleiteten Klassenkonstruktor aus auf. Der zweite Schritt besteht darin, den Prototyp wie folgt einzustellen.

Dog.prototype = new Animal();

Jetzt kann ich in meiner abgeleiteten Klasse Dog auf alle Eigenschaften der Basisklasse "Animal" zugreifen.

Meine Frage ist also, warum diese 2 Schritte notwendig sind? Wenn wir nur den Basisklassenkonstruktor mit aufrufen

Animal.call(this,name);

ist das nicht genug für die Implementierung von Inheritance?

Warum tun wirebenfalls müssen die Prototypeigenschaft mit setzenDog.prototype = new Animal(); ?

Ich wollte verstehen, was jeder der beiden oben genannten Schritte bewirkt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage