Entradas

Mostrando entradas de junio, 2009

lo que tengo que decir sobre Internet Explorer

esto es todo lo que tengo que decir sobre Internet Explorer 8 aqui

Funciones lambda o anonimas

Ahora que ya comprendemos el concepto de closures, podremos apreciar con mayor amplitud el verdadero poder de las funciones lambda o anonimas. Pero primero lo primero, porque se llaman lambda?. Las funciones anonimas en programación deben el nombre de lambda, a la teoría matemática del Calculo Lambda inventada por Alonzo Church y Stephen Kleen (que no es el creador de la botella, ese es Klein ) Teoría que sin duda esta fuera del alcance del entendimiento del humano medio, asi que si la comprendes, bien por ti. Bien, ahora para que son utiles las funciones lambda?, de que sirve no ponerle nombre a una función?. Las utilidaded de las funciones lambda son casi infinitas pero intentaré mostrarles aquí las que yo considero son las más importantes. Las posibilidad de usar funciones anonimas va de la mano con otros conceptos importantes de Javascript, como : Todo es un objeto: (incluidas las funciones), esto me permite asignar funciones a variables, y hacer referencia a ellas utilizando la

Closures

Las closures o cerraduras son un tema bastante explicado en javascript, el problema es que es tan confuso que aún cuando entendamos el concepto dificilmente aprovechamos su potencial en nuestros programas. Veamos la defininición. Una Closure es una función que es evaluada en un entorno conteniendo una o más variables dependientes de otro entorno. Como vemos la definición no hace más que contribuir a la confusión. Veamoslo así. En Javascript podemos definir una función en cualquier momento, inclusive dentro de la definición de otra función. veamos una funcion para encontrar todos los numeros pares entre 2 numeros. function numerosPares(Desde,Hasta){ function esPar(Num){ if(Num%2==0){ return true; }else{ return false; } //o, lo que es lo mismo //return !Num%2; } var pares = []; for (var i=Desde;i< Hasta;i++){ if(esPar(i)){ pares.push(i); } } return pares; } allí podemos ver com

Lenguaje dinámico

Bien, javascript es un lenguaje dinámico por que poseé objetos dinámicos. Y... qué es un objeto dinámico?. Un objeto dinámico es un objeto que puede cambiar la definición de sus miembros en tiempo de ejecución. cual es la diferencia con un objeto común? En un lenguaje orientado a objeto y con clases, los objetos son tipicamente estaticos, con lo cual no podemos por ejemplo cambiar la definición de un método en tiempo de ejecución. En cambio en un objeto dinámico si podemos hacer esto. Es importante comprender que esta caracteristica de javascript afecta profundamente a nuestra forma de programar, ya que nunca podremos estar seguros, a priorí, sobre la definición de los miembros de un objeto que recibamos como parámetro por ejemplo. Veamos un poco de como utilizar esto en el código. Supongamos que creamos un objeto iluminador, que posea un método prender y un miembro obj, al ejecutar el método prender, el objeto iluminador se encarga de setear el color de fondo de su objeto obj, a blan