Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pepote21 en 23 de Mayo 2017, 14:25

Título: JavaScript Prototype definir propiedades estáticas o comunes a objetos CU01147E
Publicado por: Pepote21 en 23 de Mayo 2017, 14:25
Hola a todos. Os paso mi código para el ejercicio CU01147E del curso de fundamentos de programación JavaScript con editor Notepad++.

Gracias, un saludo

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio  tutorialesprogramacionya.com</title>
        <meta charset="utf-8">
        <style type="text/css">
           
        </style>
        <script type="text/javascript"> 
            function cometa(diametro,celsiusTemp,nombre){
    this.diametro=diametro;
this.celsiusTemp=celsiusTemp;
this.nombre=nombre;
var farenheitTemp=0;
this.farenheitTemp=farenheitTemp;
}
cometa.prototype.definicionSegunDiccionario='Diccionario';
cometa.prototype.obtenerRadio=function(){
    return this.diametro/2;
}
cometa.prototype.obtenerTemperaturaFarenheit=function(){
    this.farenheitTemp=(this.celsiusTemp*1.8)+32;
    return this.farenheitTemp;
//return (this.celsiusTemp*1.8)+32;
}
function ejemploObjetos(){
    var cometa1=new cometa(30,-25,'Dylan');
var cometa2=new cometa(5,-15,'Aero');
var cometa3=new cometa(14,-32,'Julius');
var cometas=[cometa1,cometa2,cometa3];
for(var i=0;i<cometas.length;i++){
    alert(cometas[i].nombre+' es un cometa según '+cometas[i].definicionSegunDiccionario+', de radio: '+
cometas[i].obtenerRadio()+' y temperatura: '+cometas[i].obtenerTemperaturaFarenheit()+' grados Farenheit');
}
}
        </script>
    </head>
    <body>
    <script type="text/javascript">   
           
        </script>
       <div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
    </body>
</html>
Título: Re:JavaScript Prototype definir propiedades estáticas o comunes a objetos CU01147E
Publicado por: Ogramar en 24 de Junio 2017, 12:19
Buenas Pepote21

No he entendido bien por qué has definido dentro de cometa

            var farenheitTemp=0;
            this.farenheitTemp=farenheitTemp;

Tampoco veo muy claro que dentro de prototype hagas referencia a this, porque se entiende que prototype aplica a todos los objetos

Código: [Seleccionar]
cometa.prototype.obtenerTemperaturaFarenheit=function(){
    this.farenheitTemp=(this.celsiusTemp*1.8)+32;
    return this.farenheitTemp;
//return (this.celsiusTemp*1.8)+32;
}

También te ha faltado acceder a la propiedad de grados centígrados del cometa

Con todo lo comentado el código quedaría así:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio  tutorialesprogramacionya.com</title>
        <meta charset="utf-8">
        <style type="text/css">
           
        </style>
        <script type="text/javascript">
            function cometa(diametro,celsiusTemp,nombre){
    this.diametro=diametro;
this.celsiusTemp=celsiusTemp;
this.nombre=nombre;
}
cometa.prototype.definicionSegunDiccionario='Objeto celeste que viaja a gran velocidad';
cometa.prototype.obtenerRadio=function(){return this.diametro/2;}
cometa.prototype.obtenerTemperaturaFarenheit=function(){
    return (this.celsiusTemp*1.8)+32;
}
function ejemploObjetos(){
    var cometa1=new cometa(30,-25,'Dylan');
var cometa2=new cometa(5,-15,'Aero');
var cometa3=new cometa(14,-32,'Julius');
var cometas=[cometa1,cometa2,cometa3];
for(var i=0;i<cometas.length;i++){
    alert(cometas[i].nombre+' es un cometa con definición según diccionario '+cometas[i].definicionSegunDiccionario+', de radio: '+
cometas[i].obtenerRadio()+' y temperatura '+ cometas[i].celsiusTemp+ ' ºC o temperatura: '+cometas[i].obtenerTemperaturaFarenheit()+' grados Farenheit');
}
}
        </script>
    </head>
    <body>
       <div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
    </body>
</html>

Revísalo y haz pruebas a ver qué te parece.

Nota: ten cuidado porque en muchos ejercicios estás dejando etiquetas <script> ... < / script> vacías como si fuera código sin revisar que se te hubiera olvidado

Salu2