Cuando trato de llamar al método (método obtener detalles () del maestro) de la función de constructor secundario, se llama al método constructor principal. ¿No se supone que el método secundario sombrea el método principal? ¿Cómo llamar al método del constructor hijo getDetails()?
let Person = function() { }; Person.prototype.personName = "Smith"; Person.prototype.age = 37; Person.prototype.getDetails = function() { return `Person Name: ${this.personName}. Age is ${this.age}`; }; let Teacher = function() { }; Teacher.prototype.mainSubject = "Physics"; Teacher.prototype.getDetails = function() { return `Main subject is ${this.mainSubject}`; }; Teacher.prototype = Object.create(Person.prototype); // inheritance let teacher1 = new Teacher(); console.log(teacher1.getDetails());Asigna un nuevo objeto a Teacher.prototype , por lo tanto, pierde todo lo que le asignó de antemano. Debes crear el objeto antes que todo lo demás.
let Person = function() { }; Person.prototype.personName = "Smith"; Person.prototype.age = 37; Person.prototype.getDetails = function() { return `Person Name: ${this.personName}. Age is ${this.age}`; }; let Teacher = function() { }; Teacher.prototype = Object.create(Person.prototype); // inheritance Teacher.prototype.mainSubject = "Physics"; Teacher.prototype.getDetails = function() { return `Main subject is ${this.mainSubject}`; }; let teacher1 = new Teacher(); console.log(teacher1.getDetails());Pero hoy en día también podrías usar clases en lugar de funciones.
class Person { personName = "Smith"; age = 37; getDetails() { return `Person Name: ${this.personName}. Age is ${this.age}`; } } class Teacher extends Person { mainSubject = "Physics"; getDetails() { return `Main subject is ${this.mainSubject}`; } } let teacher1 = new Teacher(); console.log(teacher1.getDetails());