Herencia de Javascript; llamada y prototipo
Para implementar la herencia en Javascript, uno generalmente hace los siguientes 2 pasos;
Digamos que tengo una clase base "Animal"
var Animal = function(name){
this.name = name;
}
Ahora quiero derivar una subclase "Perro" de la misma. Asi que diria
var Dog = function(name) {
Animal.call(this,name);
}
Así que estoy llamando a mi constructor de clases padre desde mi constructor de clases derivado. El segundo paso es configurar el prototipo de la siguiente manera;
Dog.prototype = new Animal();
Ahora puedo acceder a cualquiera de las propiedades de la clase "Animal" base desde dentro de mi clase derivada Perro.
Entonces mi pregunta es ¿por qué son estos 2 pasos necesarios? Si solo llamamos al constructor de la clase base usando
Animal.call(this,name);
¿No es eso suficiente para implementar la herencia?
Porque nosotrosademás necesidad de establecer la propiedad prototipo utilizandoDog.prototype = new Animal();
?
Quería entender lo que hace cada uno de los 2 pasos anteriores?