Autor Tema: call JavaScript No entiendo bien ejemplo de la herencia quién es this CU01150E  (Leído 2252 veces)

eload

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Buenas  :D , estoy en la parte de herencia con javascript en la entrega CU01150E del tutorial de programación web y se me ha hecho un poco compleja enteder cierta parte, en especial este código:

Código: [Seleccionar]
<script type="text/javascript">
 
function Profesor (institucion) {
this.institucion = institucion || 'Desconocida';
this.salarioBase = 1200;
}
 
function ProfesorInterino(mesesContrato, institucion) {
Profesor.call(this, institucion);
this.mesesContrato = mesesContrato || -1;}
 
function ejemploObjetos() {
var unProfesorInterino = new ProfesorInterino(4, 'Universidad de Chapingo');
var msg = 'El objeto unProfesorInterino tiene ' + unProfesorInterino.mesesContrato + ' meses de contrato';
msg = msg + ' y pertenece a la institución '+unProfesorInterino.institucion;
alert(msg);
}
</script>

Creo la instancia de "unprofesorInternino" y le paso como parametro la institucion="universidad chapingo", se ejecuta la funcion ProfesorInterino y con ello se hace la llamada en "Profesor.call(this, institucion);"

Ahora

¿que objeto esta pasando el this?, ¿unprofesorInternino?

¿Quiere decir que la funcion quedaria mas o menos de esta forma?

Código: [Seleccionar]

function Profesor (institucion) {
UnprofesorInterino.institucion = institucion || 'Desconocida';//
this.salarioBase = 1200;
}
 
function ProfesorInterino(mesesContrato, institucion) {
                     //haciendo la simulacion
Profesor.call(UnprofesorInterino, institucion);
this.mesesContrato = mesesContrato || -1;}


En ese caso, unprofesorInterino ya habia capturado el valor de la insitucion al crearse el objeto, lo que faltaria seria asignarlo al objeto profesor no?, estoy complicado en este punto, agradeceria mucho si alguien pudiera explicarme XD.

« Última modificación: 19 de Julio 2016, 12:23 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas

En la explicación del curso aparece esto:

Citar
Se llama a la función saludar() y como resultado se obtiene “Hola, soy undefined”. ¿Por qué? Porque el objeto this en este caso es la propia función saludar y dicha función no tiene definido atributo nombre, por tanto al tratar de mostrar this.nombre muestra ‘undefined’.

En el ejemplo que comentas tú efectivamente el this sería un objeto ProfesorInterino, porque es la función ProfesorInterino. Ese objeto llama a la función Profesor pasándole el profesor interino que ya tiene unos meses de contrato e institución establecidos.

En el código:

Código: [Seleccionar]
function Profesor (institucion) {
UnprofesorInterino.institucion = institucion || 'Desconocida';//
this.salarioBase = 1200;
}

No veo lógico que escribas UnprofesorInterino.institucion porque UnprofesorInterino no veo que tenga significado dentro de la función.

Si tienes dudas escribe el documento HTML completo con el código de modo que podamos probarlo y ver dónde tienes el problema.


Salu2

eload

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Gracias por responder, ahora mismo realizo las modificaciones para publicarlas  :D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".