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:
<!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:
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!