Para hacer la herencia usando la sintaxis de prototipos podemos hacer lo siguiente:
Suponiendo que ya tenemos creada nuestra superclase (Student). Vamos a crear una clase (FreeStudent) que va a pasar los parámetros de inicialización al constructor de la superclase, para esto hacemos uso de la función call()
.
function FreeStudent(props) {
Student.call(this, props);
}
Le pasamos como primer atributo el contexto de ejecución de nuestra nueva “clase” y como segundo parámetro los props, que son estas propiedades que recibiremos de inicialización.
Después de esto, clonamos el prototipo de nuestra superclase en el prototipo de nuestra subclase:
FreeStudent.prototype = Object.create(Student.prototype);
Por último, le agregamos cualquier función extra que deseemos agregar a la subclase:
FreeStudent.prototype.approveCourse = function (newCourse) {
if (newCourse.isFree) {
this.approvedCourses.push(newCourse);
} else {
console.warn(`Lo sentimos, ${this.name}, sólo puedes tomar cursos gratis`);
}
}
Y eso es todo!
Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?