Autor Tema: Uso de bind para crear referencias a funciones que reciban parámetros CU01178E  (Leído 2746 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Hola chicos, paso a poner mis soluciones al tema CU01178E del tutorial de programación web JavaScript desde cero.

Código: [Seleccionar]
function conversor(toUnit, factor, offset, input) {

    offset = offset || 0;

    return [((offset+input)*factor).toFixed(2), toUnit].join(" ");

}

 

var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0);

var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0);

var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32);

 

alert(milesToKm(10));           

alert(poundsToKg(2.5));         

alert(farenheitToCelsius(98));

Citar
a) ¿Cuántas funciones ligadas (copias parametrizadas) de la función conversor se crean en este código?
Se crean tres funciones ligadas.

var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0);

var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0);

var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32);

Citar
b) ¿Qué es lo que devuelve la función conversor?
conversor devuelve un string, que es la unión de los valores de un vector. Une los valores de un vector separandolos por un espacio.

Citar
c) ¿Qué objeto actúa como this en la función milesToKm?
No actua ningun objeto como this, no nos hace falta trabajar directamente sobre el objeto en esta ocación .Si tuvieramos que trabajar o manipular un mismo objeto con la referencia a otra funcion pondriamos this en la primera posicion de la llamada de la función de referencia.

Citar
d) ¿Qué tarea cumple y con qué fórmula trabaja la función milesToKm?
La función milesToKm trabaja con la referencia que se hace sobre la funcion conversor que es la que contiene la fórmula.

Citar
e) ¿Qué tarea cumple y con qué fórmula trabaja la función poundsToKg?
Al igua que la funcion milesToKm esta funcion esta definida con una referencia sobre la funcion conversor que es la que realiza la operacion del calculo.

Citar
f) ¿Qué resultado devuelve milesToKm(10) y qué significa este resultado?
El resultado es 16.09 kms, este resultado es la transformación de 10 millas a kilometros.

Citar
g) ¿Qué resultado devuelve poundsToKg(2.5) y qué significa este resultado?
El resultado es 1.14 kg, este resultado es la forma de transformar la unidad de peso pound a kilogramos.

Citar
h) ¿Qué resultado devuelve farenheitToCelsius(98) y qué significa este resultado?
El resultado es 36.67 grados centígrados, este es el resultado de transformar 98 grados farenheit a grados centigrados.

Citar
i) ¿Qué significado tiene la expresión offset = offset || 0;?
Significa que si la variable offset no está declarada en la llamada de su función valdrá 0

Citar
j) ¿Cuál es la finalidad del uso de toFixed(2)?
Redondear en dos decimales el resultado del cálculo.

Citar
k) ¿Por qué crees que se usa el parámetro offset en la función conversor?
Se usa offset para que la fórmula sea más general y se pueda usar en diferentes cálculos.

Citar
l) Modifica el código para ampliar la información que se nos muestra: introduce un parámetro fromUnit en la función conversor de modo que el resultado nos informe del dato de origen, sus unidades, y el dato convertido y sus unidades.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
 function conversor(toUnit, factor, offset, fromUnit, input) {

    offset = offset || 0;

    return [((offset+input)*factor).toFixed(2), toUnit].join(" ");

}

 

var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0, 'millas');

var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0, 'pounds');

var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32, 'farenheit');

 

alert(milesToKm(10));           

alert(poundsToKg(2.5));         

alert(farenheitToCelsius(98));   
</script>
</head>
<body>
   
</body>
</html>

Saludos.
« Última modificación: 23 de Marzo 2016, 10:59 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

a) bien
b) No entiendo bien por qué dices que es la unión de valores de un vector ¿de qué vector?
c) bien
d) bien crea una copia de la función conversor y le pasa los argumentos necesarios para que se ejecute.
e) bien
f) bien
g) bien
h) bien
i) bien
j) bien
k) bien
l) No sigues lo que pedía el enunciado "que el resultado nos informe del dato de origen, sus unidades, y el dato convertido y sus unidades." como se hace en https://www.aprenderaprogramar.com/foros/index.php?topic=3787.0

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Gracias César porcorregir mis respuestas.
Respecto al apartado b), tienes toda la razón me fui por la nubes al ver los [].La respuesta sería que devuelve la union de los valores contenidos dentro [] unidos por separación.
Respecto al apartado l) al no haber entendido bien el apartado b) no hice bien el código. Ahora que sé lo que quiere decir, adjunto código.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<script>
 function conversor(toUnit, factor, offset, fromUnit, input) {

    offset = offset || 0;

    return [input, fromUnit, 'son',((offset+input)*factor).toFixed(2), toUnit].join(" ");

}

 

var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0, 'millas');

var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0, 'pounds');

var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32, 'farenheit');

 

alert(milesToKm(10));           

alert(poundsToKg(2.5));         

alert(farenheitToCelsius(98));   
</script>
</head>
<body>
   
</body>
</html>

Saludos y gracias por tu tiempo César Krall

 

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