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 24 de Mayo 2017, 20:06

Título: ReferenceError: x is not defined JavaScript Herencia y Prototype CU01149E
Publicado por: Pepote21 en 24 de Mayo 2017, 20:06
Hola a todos. Os paso mi código para el ejercicio CU01149E del manual de programación con JavaScript y editor Notepad++, quizás un poco diferente.

Üna pregunta/duda. Si descomento     //this.valorCalorico=valorCalorico;

no me funciona       tomate1.movilidad

¿Por qué, si no tiene nada que ver? No entiendo nada.

Gracias. Un saludo.

Código: [Seleccionar]
    <!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio  aprenderaprogramar.com</title>
        <meta charset="utf-8">
        <style type="text/css">
           
        </style>
        <script type="text/javascript">   
            function Vegetal(){}
Vegetal.prototype.movilidad='Ser vivo sin movilidad';
function PlantaCultivada(){
    this.nombreCientifico='desconocido';
}
PlantaCultivada.prototype=new Vegetal();
function Hortaliza(){
    this.tipoHortaliza='indefinido';
//this.valorCalorico=valorCalorico;
}
Hortaliza.prototype=new PlantaCultivada();
Hortaliza.prototype.componente='Agua';
function Zanahoria(){}
Zanahoria.prototype=new Hortaliza();
Zanahoria.prototype.valorCalorico=45;
function Lechuga(){}
Lechuga.prototype=new Hortaliza();
Lechuga.prototype.valorCalorico=31;
function Tomate(){}
Tomate.prototype=new Hortaliza();
Tomate.prototype.valorCalorico=39;

function ejemploObjetos(){
    var tomate1=new Tomate();
tomate1.nombreCientifico='tomateCasero';
var msg=tomate1.nombreCientifico+' tiene la propiedad movilidad: '+tomate1.movilidad+' y de valorCalorico '+tomate1.valorCalorico;
alert(msg);
}
        </script>
    </head>
    <body>
    <script type="text/javascript">   
           
        </script>
        <div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
    </body>
</html>
Título: Re:ReferenceError: x is not defined JavaScript Herencia y Prototype CU01149E
Publicado por: Ogramar en 24 de Junio 2017, 16:42
Buenas Pepote21

Al decir el ejercicio que toda hortaliza tiene como propiedad específica tipoHortaliza y su valor inicial debe ser "indefinido", se refiere a su valor inicial, pero una vez crees una hortaliza, debes asignarle un contenido a tipo de hortaliza, y el valor deberá ser o bien zanahoria, o bien lechuga, o bien tomate. Esto deberías corregirlo (puedes probar a mostrar todas las propiedades posibles por pantalla, así te aseguras de que esté todo correcto)

Respecto a qué ocurre si descomentas  //this.valorCalorico=valorCalorico; habría que llegar a la entrega CU01151E para poder ver el mensaje de error, pero te lo adelanto, lo que ocurre al descomentar esa línea es que aparece un error:

ReferenceError: valorCalorico is not defined  file.html:18:5

Este error hace que no se ejecute parte del código, al no ejecutarse parte del código te parece que lo que ocurre no tiene sentido, pero sí lo tiene. El sentido es que tienes un error en el código y el código no se está ejecutando.

Salu2
Título: Re:ReferenceError: x is not defined JavaScript Herencia y Prototype CU01149E
Publicado por: Pepote21 en 04 de Julio 2017, 17:41
Hola Ogramar.
Dejo el código corregido.
Un saludo.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio  aprenderaprogramar.com</title>
        <meta charset="utf-8">
        <style type="text/css">
           
        </style>
        <script type="text/javascript">   
            function Vegetal(){this.nombre='';}
Vegetal.prototype.movilidad='Ser vivo sin movilidad';
function PlantaCultivada(){
    this.nombreCientifico='desconocido';
}
PlantaCultivada.prototype=new Vegetal();
function Hortaliza(){
    this.tipoHortaliza='indefinido';
}
Hortaliza.prototype=new PlantaCultivada();
Hortaliza.prototype.componente='Agua';
function Zanahoria(){this.valorCalorico=45;}
Zanahoria.prototype=new Hortaliza();
function Lechuga(){this.valorCalorico=31;}
Lechuga.prototype=new Hortaliza();
function Tomate(){this.valorCalorico=39;}
Tomate.prototype=new Hortaliza();


function ejemploObjetos(){
    var tomate1=new Tomate();
tomate1.nombre='tomate borriolenc';
tomate1.tipoHortaliza='tomate aguilenc';
tomate1.nombreCientifico='tomateCasero';
var msg = 'El nombre del tomate1 es '+tomate1.nombre;
                msg = msg + ' que corresponde a ' +tomate1.movilidad;
                msg = msg + ' con nombre cientifico '+tomate1.nombreCientifico;
                msg = msg + ' y es del tipo de hortaliza '+tomate1.tipoHortaliza;
                msg = msg + ' cuyo componente principal es el '+tomate1.componente;
msg = msg + 'y con valor calórico '+tomate1.valorCalorico;
                alert (msg);
}

        </script>
    </head>
    <body>
    <script type="text/javascript">   
           
        </script>
        <div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
    </body>
</html>