Autor Tema: ReferenceError: x is not defined JavaScript Herencia y Prototype CU01149E  (Leído 2426 veces)

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
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>
« Última modificación: 24 de Junio 2017, 16:34 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
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>

 

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