Autor Tema: JavaScript Prototipos y herencias prototype function this new ejemplo CU01147E  (Leído 1904 veces)

JuansT

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 44
    • Ver Perfil
Respuesta al ejercicio CU01147E del tutorial de aprendizaje de programación web con JavaScript.

Aquí tengo mi solución, tengo una duda acerca de la sintaxis de acceso de tipo array, primero os adjunto el código que funciona y luego la duda.

Solución:
Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function cometa(d,t,n){
this.diametro = d;
this.temperatura = t;
this.nombre = n;
}
function definicionSegunDiccionario(){
this.definicion = "Astro generalmente formado por un núcleo poco denso y una atmósfera luminosa que lo envuelve, precediéndolo o siguiéndolo, según su posición respecto del Sol, y que describe una órbita muy excéntrica.";
}
cometa.prototype = new definicionSegunDiccionario;
cometa.prototype.obtenerRadio = function(){ return this.diametro/2;}
cometa.prototype.obtenerTemperaturaFarenheit  = function(){ return this.temperatura*1.8;}
function cargarFuncion(){
var cometa1 = new cometa(150,1000,"Bruno");
var cometa2 = new cometa(200,1500,"Arturo");
var cometa3 = new cometa(8000,3000,"Lisa");
var cometas = [cometa1,cometa2,cometa3];
var msg = "Qué es un cometa? \n" + cometa1.definicion +
"\n\nLa información de los tres cometas son: \n";

for(var i=0;i<cometas.length;i++){
msg += "Nombre: " + cometas[i]['nombre'] +
"\nRadio: " + cometas[i]["obtenerRadio"]() +
"\nTemperatura: " + cometas[i]["obtenerTemperaturaFarenheit"]() + "\n\n";
}
alert(msg);
}
</script>
</head>
<body onload="cargarFuncion()">
</body>
</html>


Al array "cometas" puedo acceder sin problemas mediante el acceso por punto, como por ejemplo cometas[0].nombre y también con el for típico guiado por la variable "i" (cometas[ i ]["nombre"]) tal como puse en la solución.
Pero quería probar el acceso tipo array mediante for in, que me parece más correcto, entonces, inicialmente yo había escrito lo siguiente:

Código: [Seleccionar]

for(c in cometas){
msg += "Nombre: " + c['nombre'] +
"\nRadio: " + c["obtenerRadio"]() +
"\nTemperatura: " + c["obtenerTemperaturaFarenheit"]() + "\n\n";
}

Pero en este caso me sale "undefined".

Espero que alguien me pueda aclarar en esta duda, gracias!
« Última modificación: 08 de Abril 2017, 12:27 por Ogramar »

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Re:JavaScript. Prototipos y herencias. CU01147E
« Respuesta #1 en: 09 de Febrero 2017, 16:06 »
El ejercicio lo tienes bien resuelto. Sobre el for in, lo tienes mal definido repasa cómo se construye.
Código: [Seleccionar]
for (elemento in vector){
    vector[elemento]
}
Saludos

 

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".