Leyendo el libro de los princpios de el paradigma orientado a objetos de Nicholas C. Zakas, aplicando lo que explica tengo el problema de que no entiendo como llamar al constructor padreo en el constructor hijo:
Creo el objeto animal
function Animal(especie){
this.especie = especie;
}
Animal.prototype.toString = function(){ return "Animal de la especie " + this.especie };
posteriormente creo el constructor de perro
function Perro(propietario){
Animal.call(this, propietario); //aquí entiendo que se llama al constructor de animal
}
Aquí entiendo que es donde la herencia ocurre
Perro.prototype = Object.create(Animal.prototype, {
constructor: {
configurable: true,
enumerable: true,
value: Perro,
writable: true
}
});
aquí invoco al toString() de animal
Perro.prototype.toString = function(){
var animalToString = Animal.prototype.toString.call(this) ;
return animalToString + " y mi dueño es " + this.propietario + ".";
}
Creo un objeto perro y lo imprimo
var chucho = new Perro("Perro", "Juan");
console.log(chucho.toString());
y en la consola:
Animal de la especie Perro y mi dueño es undefined
Qué estoy haciendo mal para que no me imprima propietario?
Gracias de antemano.