Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Rosa en 02 de Septiembre 2015, 16:54
-
Hola! Alguien sabría resolver este ejercicio? He hecho un montón de cambios y no lo consigo... una ayuda, por favor.
Se pide realizar los siguientes cambios:
a) Reemplaza toda la notación basada en sintaxis tipo array para el acceso a propiedades por sintaxis basada en notación de punto. Ejecuta el código y comprueba su funcionamiento.
b) Sobre el código de la opción a), cambia la definición de objetos para que no sean objetos únicos, sino que plus, minus y calcular sean funciones simples, y operaciones un objeto instanciable (que tendrás que instanciar si es necesario). Ejecuta el código y comprueba su funcionamiento.
c) Sobre el código de la opción c), añade la posibilidad de hacer cálculos de multiplicación y división de la misma forma que se hacen cálculos de suma y resta. Muestra un mensaje por cada tipo de operación. Ejecuta el código y comprueba su funcionamiento.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
var plus = function(x,y){ return x + y };
var minus = function(x,y){ return x - y };
var operaciones = {
'+': plus,
'-': minus
};
var calcular = function(x, y, operacion){ return operaciones[operacion](x, y); }
function ejemploObjetos() {
alert ('Resultado de calcular(3, 15, \'+\') es '+ calcular(3,15, '+'));
}
</script>
</head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemploObjetos()"> Probar </div>
</body>
</html>
En el apartado a) En que parte del código está la sintaxis tipo array, en operaciones[operacion]?
En el apartado b) No sé coomo se haría el cambio de objetos únicos a funciones simples, por favor, necesito ayuda, quiero avanzar y me cuenta.
Un saludo y gracias
-
Hola Rosa, para el apartado a) la respuesta que yo le daría es la siguiente:
La sintaxis de tipo array aparece en la línea return operaciones[operacion](x, y);
En este caso no podemos usar la notación de punto por lo que se indica en la propia entrega CU01146E:
¿Para qué es útil el acceso a propiedades con la sintaxis tipo array?
Algunos programadores la usan porque les gusta, pero hay casos en que es la única forma de acceder a una propiedad. Supón que el nombre de una propiedad lo establece el usuario (o se crea dinámicamente de alguna manera) introduciendo un dato que almacenas en una variable denominada nombrePropiedad. En este caso no es posible acceder a la propiedad con la sintaxis nombreObjeto.nombrePropiedad, pero sí será posible acceder con la sintaxis nombreObjeto[nombrePropiedad].
Se puede realizar esta prueba:
var calcular = function(x, y, operacion){
alert ('Tenemos: '+ operaciones[operacion] + ' y sin embargo '+operaciones.operacion+'')
return operaciones[operacion](x, y); }
El resultado que se obtiene es:
Tenemos: function (x,y){ return x + y } y sin embargo undefined
Esto nos indica que operaciones[operacion] nos devuelve algo (una función que requiere dos parámetros) mientras que operaciones.operacion no nos devuelve nada, en este caso no es posible el acceso a la propiedad con esta notación
Por tanto no resulta viable el reemplazo de la notación tipo array por notación basada en punto
Saludos
-
Gracias