Fecha Reunión

¡¡¡ ATENCIÓN HEMOS CAMBIADO DE DÍA Y LUGAR POR PROBLEMAS LOGÍSTICOS !!!!

Miércoles 24 Agosto 18.00h

Duración: Intentaremos ajustarnos a 4 pomodoros de 25min.

Haremos unas cervezas al finalizar, por eso de asentar conceptos.

Puedes apuntarte al final de esta misma página.

Lugar

Sala Ciball

Corredera Baja de San Pablo nº 41 - 28004 Madrid (Mapa)

Ejercicios

1. Herencia

Modelar mediante herencia prototípica figuras geométricas (circulo, cuadrado, elipse y rectángulo). Deben incluirse métodos que calculen el área, perímetro así como propiedades para posición y dimensiones. También debe incluir un método para "describir" la figura mediante la consola. La descripción debe incluir posición, dimensiones y tipo.

Soluciones propuestas:

2. Función map

Escribe una función que tome como primer argumento un array, como segundo argumento otra función, y construya un nuevo array aplicando la función argumento a cada uno de los elementos del array original. ¡Enhorabuena! has creado una implementación básica de map :)

Test: map([1,2,3,4],function(x){return x*x}) devolverá [1,4,9,16]

Soluciones propuestas:

3. Saludador

Crear una función que devuelva otra función que salude por la consola cada vez que se invoque. La primera función recibe por la consola el nombre de la persona a saludar, la función devuelta no tiene parámetros.

Test: saludo=crearSaludo("Pepe"); saludo() imprimirá en la consola Hola Pepe

Soluciones propuestas:

4. Saludador múltiple

Modificar la función anterior, ahora puede recibir un array de nombres y devuelve un array de funciones. Cada una de estas funciones saludará a la persona correspondiente según el orden del array.

Test: var saludos=crearSaludo(["Pepe", "María"]); saludos[0](); saludos[1]() imprimirá en la consola Hola Pepe y Hola María en líneas separadas

Soluciones propuestas:

5. Simular setTimeout

Para solicitar al navegador que ejecute una función de forma diferida se utiliza la función setTimeout. Toma como argumentos la función a ejecutar y el tiempo (en milisegundos) que debe transcurrir antes de su invocación. Considera el bloque de código:

              var Autobot = function(nombre){
                this.nombre = nombre;
              }
              Autobot.prototype.saludar = function() {
                alert('Hola, me llamo '+this.nombre);
              }
              var optimus = new Autobot('Optimus Prime');

Restricción y pista para el futuro: No se puede utilizar Function.prototype.bind

  • Parte 1. (fácil): Sin añadir métodos a Autobot.prototype solicita que se ejecute el método saludar sobre optimus pasados 5 segundos.

Soluciones propuestas:

  • Parte 2. (no tan fácil): Añade un método a Autobot.prototype que tome como argumento un tiempo en milisegundos y solicite la ejecución de saludar sobre el objeto pasados 5 segundos.

Soluciones propuestas:

6. Ejercicio avanzado

Añadir el método "memorizaParametro" a todas las funciones del sistema. Este método, aplicado sobre una función, recibe un parámetro y devuelve una función, que al ser invocada, sería equivalente a ejecutar la función original pero con el primer parámetro fijado a lo que se pasó al método memorizaParametro.

Test: var mensaje=function(a,b){console.log(a+":"+b);}; var mesajeHola=mensaje.memorizaParametro("Hola"); mensajeHola("Pepe"); imprimirá en la consola Hola:Pepe

Soluciones propuestas:

7. Reutilizar métodos anteriores

Realizar los ejercicios "Saludador" y "Saludador múltiple" utilizando el método "memorizaParametro" anteriormente implementado.

Soluciones propuestas:

Temas a estudiar

  • Closures

Conviene que repaséis de la semana anterior:

  • Objetos y constructores.
  • Prototype y herencia

Se resolverán dudas, haremos un resumen con los puntos mas importantes que hay que saber y a continuación implementaremos varios ejercícios prácticos o alguna kata de entrenamiento.

Asistentes

(Edita esta página y añádete si vas a venir)

  • Israel Alcázar (@ialcazar)
  • Enrique Amodeo (@eamodeorubio)
  • Sergio Ruiz (@serginator) //Hoy soy baja, sorry, ya tenía plan y no voy a poder ir... dadle caña!
  • Jimmy Coll (@acido69)
  • Pedro Cos (@cos1887)
  • Félix Zapata (@felixzapata)
  • Óscar López (@Osukaru80)
  • Alvaro Fidalgo (perdon por no asistir , me fije en el cambio de lugar pero no de día)
  • Jorge González (@boton)
  • Javier Brea (@javierbrea)
  • Carlos Benítez (@etnassoft)
  • Natalí Sánchez (@nnatali)
  • vieron (@vieron)
  • Sergio Ramirez (@humanrender)
  • Fernando García (@stripTM)
  • David Bonilla (@david_bonilla)
changed October 2, 2011