Gracias, bermartinv.
Creo que me ha quedado claro el tema. De todas maneras, si tengo más dudas, os lo preguntaré, que me he dado cuenta que sois personas amables y puedo contar con vuestra ayuda.
Sólo una cuestión, en el código siguiente (que es de tu enlace):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
function persona(nombre){
this.nombre = nombre || 'desconocido';
this.saludar = function(mastexto){
alert ('Te saluda ' +this.nombre+ ' que trabaja en '+this.institucionAcademica+mastexto);
}
}
persona.prototype.definicion = 'Una persona es un ser vivo que tiene conocimiento';
function profesor(institucionAcademica,nombre){
this.institucionAcademica = institucionAcademica || 'desconocida';
persona.call(this,nombre);
}
profesor.prototype = new persona();
function profesorInterino(mesesContrato,institucionAcademica,nombre){
this.mesesContrato = mesesContrato || 0;
profesor.call(this,institucionAcademica,nombre);
}
profesorInterino.prototype = new profesor();
function profesorTitular(anyosTrabajados,institucionAcademica,nombre){
this.anyosTrabajados = anyosTrabajados || 0;
profesor.call(this,institucionAcademica,nombre);
}
profesorTitular.prototype = new profesor();
function crearObjeto(){
profesorTitular1 = new profesorTitular(8,'Universidad de Leon','Juan');
alert(profesorTitular1.definicion);
profesorTitular1.saludar(' y lleva '+profesorTitular1.anyosTrabajados+' anyos trabajados');
}
</script>
</head>
<body>
<button onclick="crearObjeto()">Profesor Titular</button>
</body>
</html>
En la función:
function profesorInterino(mesesContrato,institucionAcademica,nombre){
this.mesesContrato = mesesContrato || 0;
profesor.call(this,institucionAcademica,nombre);
}
profesorInterino.prototype = new profesor();
de dónde se le pasa la información de las variablels "institucionAcademica" y "nombre"?
Al principio, al crea el objeto "new profesorTitular" sólo se le pasas a la misma, pero dentro de ella no llamas a la función "profesorInterino" para pasarle los parámetros. Quiero decir, no debería de ser la función "profesorTitular" así:
function profesorTitular(anyosTrabajados,institucionAcademica,nombre){
this.anyosTrabajados = anyosTrabajados || 0;
profesor.call(this,institucionAcademica,nombre);
profesorInterino.call(institucionesAcademica,nombre);
}
en vez de así:
function profesorTitular(anyosTrabajados,institucionAcademica,nombre){
this.anyosTrabajados = anyosTrabajados || 0;
profesor.call(this,institucionAcademica,nombre);
}
Y en la función "profesorInterino" por qué le pasas un parámetro vacío si lo inicias en la misma funcio? Es decir, no debería de ser así:
function profesorInterino(institucionAcademica,nombre){
this.mesesContrato = 'valorInicializadoAquí';
profesor.call(this,institucionAcademica,nombre);
}
en vez de así:
function profesorInterino(mesesContrato,institucionAcademica,nombre){
this.mesesContrato = mesesContrato || 0;
profesor.call(this,institucionAcademica,nombre);
}
Ya te digo, bermartinv, no te estoy corregiendo, sino que estoy intentando aclararme el lío que tengo en la cabeza con las herencia.
Además, creo que el concepto de "herencia" no es muy adecuado para este tipo de métodos. Yo le llamaría, más bien, pasarse los parámetros de una función a otra. Y si fuera, realmente, herencias, tal y como está en las entregas, las flechas deberían de apuntar al revés. Me explico. Si le vamos pasando parámetros de la función "profesorTitular" a profesor, no debería de ser más correcto decir que la función "profesor" hereda de la función "profesorTitular" y no al revés? Al fin y al cabo, es la función "profesorTitular" que le pasa la información a la función "profesor" por mucho que en la función "profesor" se inicializa el valor del parámetro pasado, que ya pasa a ser una variable con valor.
No sé si me he explicaco bien