<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Favio.tolosa</id>
		<title>Dos Ideas. - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://dosideas.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Favio.tolosa"/>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/Especial:Contribuciones/Favio.tolosa"/>
		<updated>2026-06-10T02:46:45Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Minificado_Javascript_con_YUI_Compressor&amp;diff=6881</id>
		<title>Minificado Javascript con YUI Compressor</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Minificado_Javascript_con_YUI_Compressor&amp;diff=6881"/>
				<updated>2013-08-06T13:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]][[Category:Maven]]&lt;br /&gt;
== YUI Compressor ==&lt;br /&gt;
YUI Compressor es una libreria hecha por Yahoo que sirve para minificar archivos javascript y css.&lt;br /&gt;
&lt;br /&gt;
== Plugin Maven ==&lt;br /&gt;
Existe un plugin en maven que usa esta libreria para minificar todos los archivos js y css que se encuentren en el proyecto.&lt;br /&gt;
&lt;br /&gt;
== Pom.xml == &lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plugin&amp;gt;&lt;br /&gt;
    &amp;lt;groupId&amp;gt;net.alchim31.maven&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;yuicompressor-maven-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.3.0&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;executions&amp;gt;&lt;br /&gt;
        &amp;lt;execution&amp;gt;&lt;br /&gt;
            &amp;lt;phase&amp;gt;site&amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;goals&amp;gt;&lt;br /&gt;
               &amp;lt;goal&amp;gt;compress&amp;lt;/goal&amp;gt;&lt;br /&gt;
            &amp;lt;/goals&amp;gt;&lt;br /&gt;
        &amp;lt;/execution&amp;gt;&lt;br /&gt;
    &amp;lt;/executions&amp;gt;&lt;br /&gt;
    &amp;lt;configuration&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Al minificar los archivos si les agrega el prefijo.&lt;br /&gt;
             Si esta en false el default es '-min'--&amp;gt;&lt;br /&gt;
        &amp;lt;nosuffix&amp;gt;true&amp;lt;/nosuffix&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Directorio donde estan los archivos a minificar--&amp;gt;&lt;br /&gt;
        &amp;lt;sourceDirectory&amp;gt;${basedir}/public_html/js/app&amp;lt;/sourceDirectory&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Directorio donde van a quedar los archivos minificados--&amp;gt;&lt;br /&gt;
        &amp;lt;outputDirectory&amp;gt;${basedir}/target/javascripts&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;
        &amp;lt;aggregations&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Tareas que se executan luego de minificar los archivos--&amp;gt;  &lt;br /&gt;
             &amp;lt;aggregation&amp;gt;&lt;br /&gt;
                  &amp;lt;!-- Elimina los archivos minificados en el 'outputDirectory' luego de ejecutar esta &lt;br /&gt;
                       'aggregation'.--&amp;gt;&lt;br /&gt;
                  &amp;lt;removeIncluded&amp;gt;true&amp;lt;/removeIncluded&amp;gt;&lt;br /&gt;
                  &amp;lt;!-- Path que indica donde se va a guardar el archivo minificado&lt;br /&gt;
                       final con todos los archivos del proyecto.--&amp;gt;&lt;br /&gt;
                  &amp;lt;output&amp;gt;${basedir}/target/javascripts/minified/app.js&amp;lt;/output&amp;gt;&lt;br /&gt;
                  &amp;lt;!-- Directorio donde se encuentran los archivos ya minificados en la tare&lt;br /&gt;
                       anterior.--&amp;gt;&lt;br /&gt;
                  &amp;lt;inputDir&amp;gt;${basedir}/target/javascripts&amp;lt;/inputDir&amp;gt;&lt;br /&gt;
                  &amp;lt;includes&amp;gt;&lt;br /&gt;
                      &amp;lt;!-- Se incluyen los archivos que van a conformar el minificado final.--&amp;gt;&lt;br /&gt;
                      &amp;lt;!-- En primer lugar se puede agregar un archivo txt a modo de comentario&lt;br /&gt;
                           en la que se puede incluir el copyright, como lo tiene jQuery.--&amp;gt;&lt;br /&gt;
                      &amp;lt;include&amp;gt;copyright.txt&amp;lt;/include&amp;gt;&lt;br /&gt;
                      &amp;lt;include&amp;gt;**/*.js&amp;lt;/include&amp;gt;&lt;br /&gt;
                  &amp;lt;/includes&amp;gt;&lt;br /&gt;
                  &amp;lt;excludes&amp;gt;&lt;br /&gt;
                      &amp;lt;!-- Archivos que se quieren excluir de la tarea.--&amp;gt;&lt;br /&gt;
                      &amp;lt;exclude&amp;gt;jquery.js&amp;lt;/exclude&amp;gt;&lt;br /&gt;
                  &amp;lt;/excludes&amp;gt;&lt;br /&gt;
             &amp;lt;/aggregation&amp;gt;&lt;br /&gt;
        &amp;lt;/aggregations&amp;gt;&lt;br /&gt;
     &amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/plugin&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Pagina oficial del plugin maven [http://alchim31.net/mvnsites/yuicompressor-maven-plugin/]&lt;br /&gt;
* Pagina oficial de la libreria [http://yui.github.io/yuicompressor/]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6880</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6880"/>
				<updated>2013-08-06T13:00:20Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]]&lt;br /&gt;
[[JavaScript]] es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.&lt;br /&gt;
&lt;br /&gt;
Al igual que [[Java]], [[JavaScript]] es un lenguaje orientado a objetos propiamente dicho, ya que dispone de Herencia, si bien esta se realiza siguiendo el paradigma de programación basada en prototipos, ya que las nuevas clases se generan clonando las clases base (prototipos) y extendiendo su funcionalidad.&lt;br /&gt;
&lt;br /&gt;
Todos los navegadores modernos interpretan el código [[JavaScript]] integrado dentro de las páginas web. Para interactuar con una página web se provee al lenguaje [[JavaScript]] de una implementación del DOM.&lt;br /&gt;
&lt;br /&gt;
==Frameworks==&lt;br /&gt;
[[JavaScript]] cuenta con infinidad de frameworks y librerias que otorgan diversa funcionalidad. Entre los más conocidos:&lt;br /&gt;
* [[JQuery]], un framework de aplicación base, sumamente extensible.&lt;br /&gt;
* [[Prototype]], un framework de aplicación base que permite definir clases, muy usado.&lt;br /&gt;
* [[Rico]], un framework de componentes de presentación [AJAX].&lt;br /&gt;
* [[Concurrent Thread Javascript]], librería para manejo de hilos.&lt;br /&gt;
&lt;br /&gt;
==Compatibilidad entre navegadores==&lt;br /&gt;
===Problemas con IE===&lt;br /&gt;
====Json is undefined====&lt;br /&gt;
La version de IE7 e IE8 no tiene importado de forma nativa las librerias de Json, por lo tanto hay que importarlas.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; !--[if lt IE 8]&amp;gt;&lt;br /&gt;
     &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;/js/json2.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bajar la libreria de json desde [[https://github.com/douglascrockford/JSON-js aca]].&lt;br /&gt;
&lt;br /&gt;
====Change event listener====&lt;br /&gt;
El comportamiento del listener del evento &amp;quot;change&amp;quot; cuando se lo bindeamos a un radio button es el siguiente:&lt;br /&gt;
&lt;br /&gt;
* en IE 7 el evento se dispara cuando el focus abandona el radio button.&lt;br /&gt;
&lt;br /&gt;
* en Firefox (3.x), Safari (3.x) y opera (96) el evento se dispara al momento de que el radio button es seleccionado, sin esperar a que el focus abandone el radio.&lt;br /&gt;
&lt;br /&gt;
Un workaround para que IE se comporte igual que el resto de los navegadores es el siguiente:&lt;br /&gt;
&lt;br /&gt;
 if ($.browser.msie) {&lt;br /&gt;
     $('input[name=radioXXX]').bind('click', function(){&lt;br /&gt;
       this.blur();&lt;br /&gt;
       this.focus();&lt;br /&gt;
     });&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $('input[name=radioXXX]').bind('change', function(){&lt;br /&gt;
    ........;&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [http://es.wikipedia.org/wiki/JavaScript JavaScript en la Wikipedia]&lt;br /&gt;
* [http://www.theserverside.com/tt/articles/article.tss?l=OOJavaScriptDemonstrated Conceptos y operaciones básicas]&lt;br /&gt;
* [[Test de javascript con QUnit]]&lt;br /&gt;
* [[Node.js]]&lt;br /&gt;
* [[JasmineJs]]&lt;br /&gt;
* [[Integrando JasmineJS con Ant]]&lt;br /&gt;
* [[UnderscoreJs]]&lt;br /&gt;
* [[Minificado Javascript con YUI Compressor]]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6823</id>
		<title>UnderscoreJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6823"/>
				<updated>2013-03-21T16:55:07Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]]&lt;br /&gt;
== Underscore ==&lt;br /&gt;
&lt;br /&gt;
UnderscoreJs es una librería javascript bastante simple de usar que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript.&lt;br /&gt;
El prefijo usado para usar sus funciones es &amp;quot;_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Algunas de las funciones ==&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
&lt;br /&gt;
Es una funcion que obtiene determinados objetos dentro un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
De un array que contiene objetos personas quiero obtener las que contengan el apellido &amp;quot;Perez&amp;quot;, para eso vamos a usar la funcion filter.&lt;br /&gt;
Esta última recibe como parametro el array que contiene los elementos en el cual queremos realizar la busqueda, &lt;br /&gt;
y como segundo parametro un callback que realiza una iteracion por cada elemento del array. &lt;br /&gt;
Si el callback retorna un valor verdadero, el elemento del array original es duplicado en un array auxiliar. &lt;br /&gt;
Una vez que la iteracion termine la funcion filter retorna el array auxiliar con los resultados de la busqueda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;De la Serna&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.filter(personas, function (persona) {&lt;br /&gt;
    return persona.apellido === &amp;quot;Perez&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
El array devuelto es:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
       nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
       apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
       apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uniq ===&lt;br /&gt;
&lt;br /&gt;
Es una función que elimina duplicados de un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var names = ['Juan', 'Javier', 'Ernesto', 'Ernesto'];&lt;br /&gt;
_.uniq(names);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado es &lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	&amp;quot;Juan&amp;quot;, &lt;br /&gt;
	&amp;quot;Javier&amp;quot;, &lt;br /&gt;
	&amp;quot;Ernesto&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reduce ===&lt;br /&gt;
&lt;br /&gt;
Esta funcion realiza una suma de los valores que contienen los atributos que nosotros definamos para cierto array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos una array de personas, cada una tiene un nombre y una edad. Lo que queremos hacer es sumar las edades de todas las personas dentro del array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		edad: 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		edad: 20&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		edad: 50&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos como parametro el array de personas, un callback que recibe el resultado de la suma y el elemento del array, &lt;br /&gt;
y como otro parametro el valor inicial de la suma, en este caso será 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.reduce(personas, function (resultado, persona) {&lt;br /&gt;
    return resultado + persona.edad;&lt;br /&gt;
}, 0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
Esto retorna el valor 100.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Estas y muchas otras funciones las pueden encontrar en la pagina oficial de [http://underscorejs.org/ UnderscoreJs].&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=Integrando_JasmineJS_con_Ant&amp;diff=6822</id>
		<title>Integrando JasmineJS con Ant</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=Integrando_JasmineJS_con_Ant&amp;diff=6822"/>
				<updated>2013-03-21T16:54:47Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JasmineJs]]&lt;br /&gt;
Vamos a suponer que tenemos un proyecto web que usa [http://ant.apache.org/ ant], y queremos agregar tests para nuestro código escrito en Javascript. Para lograr esto, vamos a valernos de [http://phantomjs.org/ PhantomJs]. Esto es un ejecutable que simula ser un navegador web sin la parte visual, que nos brindará un entorno en el cual correremos nuestras pruebas.&lt;br /&gt;
&lt;br /&gt;
Lo que haremos en primera instancia es agregar los ejecutables y dependencias de Phantom a nuestro proyecto. Luego tenemos que agregar una tarea ant a nuestro archivo xml, invocando a dicho ejecutable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Build.xml'''''&lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;target name=&amp;quot;testJavascript&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;echo&amp;gt;Ejecutando tests de javascript...&amp;lt;/echo&amp;gt;&lt;br /&gt;
      &amp;lt;exec executable=&amp;quot;Path del archivo ejecutable de phantom&amp;quot; failonerror=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
          &amp;lt;arg value=&amp;quot;Path del runner para jasmine” /&amp;gt;&lt;br /&gt;
          &amp;lt;arg value=&amp;quot;Path del html que contiene los archivos js, y sus respectivos tests&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;arg value=&amp;quot;500&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/exec&amp;gt;&lt;br /&gt;
      &amp;lt;echo&amp;gt;La ejecución de los test ha finalizado.&amp;lt;/echo&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al invocar al ejecutable de Phantom, notemos que debemos agregar 3 parámetros:&lt;br /&gt;
* la ruta de un runner para Jasmine.&lt;br /&gt;
* la ruta del archivo html que contiene las inclusiones de los Js productivos y de tests&lt;br /&gt;
* Un timeout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Fuentes''':&lt;br /&gt;
&lt;br /&gt;
[http://phantomjs.org/ PhantomJs]&lt;br /&gt;
&lt;br /&gt;
[http://creynders.wordpress.com/2012/03/14/automating-javascript-builds/ Jasmine + Ant]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JasmineJs&amp;diff=6821</id>
		<title>JasmineJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JasmineJs&amp;diff=6821"/>
				<updated>2013-03-21T16:54:02Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]]&lt;br /&gt;
== Introducción ==&lt;br /&gt;
&lt;br /&gt;
=== Objetivo: ===&lt;br /&gt;
&lt;br /&gt;
* Testear el código Javascript de nuestra aplicación web.&lt;br /&gt;
&lt;br /&gt;
=== Herramientas a usar ===&lt;br /&gt;
&lt;br /&gt;
* jasmine&lt;br /&gt;
* jasmine-fakeAjax&lt;br /&gt;
* jasmine-jQuery&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jasmine ==&lt;br /&gt;
Es un framework de desarrollo para testear código Javascript.  La configuración mínima necesaria es:&lt;br /&gt;
&lt;br /&gt;
* Dependencias de Jasmine&lt;br /&gt;
* Un archivo html donde correrán los test&lt;br /&gt;
* Archivos JS productivos&lt;br /&gt;
* Archivos JS con nuestros tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de las dependencias de jasmine, encontramos los archivos:&lt;br /&gt;
* jasmine.css&lt;br /&gt;
* jasmine.js&lt;br /&gt;
* jasmine-html.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el html se visualizarán los resultados de los test desarrollados. A continuación, la estructura de dicho html:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&lt;br /&gt;
    &amp;quot;http://www.w3.org/TR/html4/loose.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;!--        dependencias de jasmine--&amp;gt;&lt;br /&gt;
        &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;lib/jasmine/jasmine.css&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/jasmine/jasmine.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/jasmine/jasmine-html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--        dependencias de nuestros tests--&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/jquery-1.9.0.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/underscore-1.1.7-min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/jasmine-jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;view/preLoadFixtures.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;lib/jasmine-fake-ajax.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--        dependencias de nuestro codigo productivo--&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;bienvenido.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--        nuestros archivos con los specs--&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;bienvenidoTest.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
            //            agregamos el reporte de tests y lo ejecutamos&lt;br /&gt;
            jasmine.getEnv().addReporter( new jasmine.TrivialReporter());&lt;br /&gt;
            jasmine.getEnv().execute();&lt;br /&gt;
        &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;     &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos visualizar que el html además de contener las configuración básica para correr test con jasmine, contiene librerias que nos ayudan a desarrollar test de mayor calidad. Estas las podemos visualizar dentro del bloque &amp;quot;dependencias de nuestros tests&amp;quot; y se explicarán luego.&lt;br /&gt;
&lt;br /&gt;
En Jasmine los tests tienen la siguiente estructura:&lt;br /&gt;
&lt;br /&gt;
* '''Describe''': es una función que recibe como parámetros un string con un nombre que identifica a un conjunto de casos de test, y una función, que contiene 1 o más sentencias “it”&lt;br /&gt;
** '''it''': es cada caso posible para nuestro test. También conserva la misma forma de un describe: una función que recibe dos parámetros: un string con su descripción, y una función con nuestro caso de test, que contiene 1 o más “expect”&lt;br /&gt;
*** '''expect''': es una función que recibe como parámetro un valor “real”; y se encadena a una función “matcher”, la cual lleva como parámetro el valor esperado. Para ser más concretos, quedaría: expect(valorReal).toBe(valorEsperado);  donde “toBe” es una de las posibles funciones matcher.&lt;br /&gt;
**** '''matcher''': es una comparación entre un valor real y uno esperado. Se los puede negar encadenando la función “not” delante de ellos. Tenemos matchers incluidos por Jasmine, y también podemos definir más nosotros.&lt;br /&gt;
&lt;br /&gt;
Vamos a ejemplificar con un test dummy:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
describe(&amp;quot;este es un test dummy&amp;quot;, function() {&lt;br /&gt;
it(&amp;quot;y este es un caso de test&amp;quot;, function() {&lt;br /&gt;
  expect(true).toBe(true);&lt;br /&gt;
  expect(false).not.toBe(true);&lt;br /&gt;
});&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observen que en el caso anterior la función '''expect''' nos retorna un objeto, del cual utilizamos el atributo '''not''' y de él, su  matcher '''toBe''', para negar el resultado de este último.&lt;br /&gt;
&lt;br /&gt;
Vamos con un ejemplo en el cual yo quiero tener un objeto &amp;quot;persona&amp;quot;, que tenga un atributo &amp;quot;saludar&amp;quot;, el cual al invocarlo me retorne &amp;quot;hola&amp;quot;. El test nos quedaría así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
describe(&amp;quot;persona.saludar&amp;quot;,function(){&lt;br /&gt;
	&lt;br /&gt;
	it(&amp;quot;deberia retornar hola&amp;quot;, function(){&lt;br /&gt;
		var saludo = persona.saludar();&lt;br /&gt;
		expect(saludo).toEqual(&amp;quot;hola&amp;quot;);&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les propongo que antes de leer las líneas siguientes, ejecuten los tests e intenten interpretar los errores que nos lanza Jasmine.  Pueden descargar este [https://frameworks-test-javascript.googlecode.com/svn/trunk/jasmine-minConfig  proyecto de prueba] donde encontrarán un holaMundo.&lt;br /&gt;
&lt;br /&gt;
¿Qué pasa si quiero hacer algo antes de cada Test?&lt;br /&gt;
Bueno, para eso usamos ''beforeEach'' y ''afterEach''. El código que pongamos dentro de estas funciones, serán llamados antes y después de cada ''it'', respectivamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
describe('beforeEach', function(){&lt;br /&gt;
   beforeEach(function(){&lt;br /&gt;
       // Antes de cada caso de prueba se carga un archivo html.&lt;br /&gt;
       jasmine.getFixtures().load(&amp;quot;persona/prueba.html&amp;quot;);&lt;br /&gt;
   });&lt;br /&gt;
   it('Caso prueba', function(){&lt;br /&gt;
       // Test&lt;br /&gt;
   });    &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fake Ajax ==&lt;br /&gt;
Jasmine-fakeAjax nos permite crear interceptores de urls, y enviar datos dummy en las mismas cuando son ejecutadas desde JQuery.ajax();&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
describe('Test FakeAjax', function() {&lt;br /&gt;
   it('La data que devolvio la llamada ajax es igual al del fake', function() {&lt;br /&gt;
       var mensaje;&lt;br /&gt;
       // Registramos el fake ajax.&lt;br /&gt;
       registerFakeAjax({url: '/prueba', successData: 'Prueba exitosa'});&lt;br /&gt;
       // Hacemos la llamada ajax.&lt;br /&gt;
       $.get('/prueba', function(data) {&lt;br /&gt;
           mensaje= data&lt;br /&gt;
       });&lt;br /&gt;
       // Comprobamos que nos hay llegado lo que definimos en el fake&lt;br /&gt;
       expect(mensaje).toEqual('Prueba exitosa')&lt;br /&gt;
   })&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fixtures ==&lt;br /&gt;
Usamos la libreria Jasmine-jQuery para testear los JS que interactúan con nuestro html, la misma nos provee matchers de jquery, y nos permite manejar: CSS, HTML y JSON en nuestros specs. También nos permite armar un &amp;quot;esqueleto&amp;quot; de la página en la que va a ejecutar nuestro código JS. Esto lo logra mediante un elemento que buscaremos mediante el id &amp;quot;sandbox&amp;quot;, y al cual le agregaremos nuestro código html, estilos, etc. &lt;br /&gt;
Ahora bien, cuando hay varios casos de test en los que debemos utilizar el mismo html, se vuelve tedioso tener que copiar este código a lo largo de todos los archivos. Para solucionar este problema, el módulo fixture de esta librería nos permite cargar archivos HTML en nuestros test.&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo''':&lt;br /&gt;
Tenemos un archivo llamado pruebaFixture.html que contiene:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;prueba&amp;quot; style=&amp;quot;display:none;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se setea el path en donde estaran los fixtures, por defecto es “spec/javascripts/fixtures”&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
jasmine.getFixtures().fixturesPath = './fixtures';&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se levanta el HTML con la función load.&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
jasmine.getFixtures().load(&amp;quot;pruebaFixture.html&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El test que comprueba que el div este oculto.&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
it(&amp;quot;El input id debe estar oculto&amp;quot;,function(){&lt;br /&gt;
      var div = $(&amp;quot;#prueba&amp;quot;);&lt;br /&gt;
      expect(div).toBeHidden();&lt;br /&gt;
    });  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este test comprueba que el elemento #prueba sea un div.&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
it(&amp;quot;El elemento es un div&amp;quot;,function(){&lt;br /&gt;
      var div = $(&amp;quot;#prueba&amp;quot;);&lt;br /&gt;
      expect(div).toBe('div');&lt;br /&gt;
    });  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Algo para tener en cuenta es que debemos cargar los fixtures en memoria antes de cargar la librería fake ajax por un conflicto entre las librerías. Es decir, deberá existir un archivo que precargue los fixtures antes de cargar la librería fake ajax, como se muestra en el archivo preLoadFixtures.js&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
jasmine.getFixtures().fixturesPath = './fixtures';&lt;br /&gt;
jasmine.getFixtures().preload(&amp;quot;fixture1.html&amp;quot;,&amp;quot;fixture2.html&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y luego, al cargar el archivo html, se deberá cargar el archivo preLoadFixtures.js antes del archivo de la librería de fake ajax. &lt;br /&gt;
Una vez cargados los fixtures en memoria, los mismos se cargarán de la misma manera mencionada al comienzo de la sección mediante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
jasmine.getFixtures().load(&amp;quot;fixture1.html&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fuentes / Más info en &lt;br /&gt;
&lt;br /&gt;
[http://pivotal.github.com/jasmine/ Jasmine]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/velesin/jasmine-jquery Repositorio de jasmine-jquery]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/mileskin/jasmine-fake-ajax Repositorio de jasmine-fake-ajax]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6820</id>
		<title>UnderscoreJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6820"/>
				<updated>2013-03-19T19:58:48Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: /* Filter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Underscore ==&lt;br /&gt;
&lt;br /&gt;
UnderscoreJs es una librería javascript bastante simple de usar que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript.&lt;br /&gt;
El prefijo usado para usar sus funciones es &amp;quot;_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Algunas de las funciones ==&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
&lt;br /&gt;
Es una funcion que obtiene determinados objetos dentro un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
De un array que contiene objetos personas quiero obtener las que contengan el apellido &amp;quot;Perez&amp;quot;, para eso vamos a usar la funcion filter.&lt;br /&gt;
Esta última recibe como parametro el array que contiene los elementos en el cual queremos realizar la busqueda, &lt;br /&gt;
y como segundo parametro un callback que realiza una iteracion por cada elemento del array. &lt;br /&gt;
Si el callback retorna un valor verdadero, el elemento del array original es duplicado en un array auxiliar. &lt;br /&gt;
Una vez que la iteracion termine la funcion filter retorna el array auxiliar con los resultados de la busqueda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;De la Serna&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.filter(personas, function (persona) {&lt;br /&gt;
    return persona.apellido === &amp;quot;Perez&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
El array devuelto es:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
       nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
       apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
       apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uniq ===&lt;br /&gt;
&lt;br /&gt;
Es una función que elimina duplicados de un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var names = ['Juan', 'Javier', 'Ernesto', 'Ernesto'];&lt;br /&gt;
_.uniq(names);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado es &lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	&amp;quot;Juan&amp;quot;, &lt;br /&gt;
	&amp;quot;Javier&amp;quot;, &lt;br /&gt;
	&amp;quot;Ernesto&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reduce ===&lt;br /&gt;
&lt;br /&gt;
Esta funcion realiza una suma de los valores que contienen los atributos que nosotros definamos para cierto array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos una array de personas, cada una tiene un nombre y una edad. Lo que queremos hacer es sumar las edades de todas las personas dentro del array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		edad: 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		edad: 20&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		edad: 50&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos como parametro el array de personas, un callback que recibe el resultado de la suma y el elemento del array, &lt;br /&gt;
y como otro parametro el valor inicial de la suma, en este caso será 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.reduce(personas, function (resultado, persona) {&lt;br /&gt;
    return resultado + persona.edad;&lt;br /&gt;
}, 0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
Esto retorna el valor 100.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Estas y muchas otras funciones las pueden encontrar en la pagina oficial de [http://underscorejs.org/ UnderscoreJs].&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6819</id>
		<title>UnderscoreJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6819"/>
				<updated>2013-03-19T19:56:47Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: /* Underscore */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Underscore ==&lt;br /&gt;
&lt;br /&gt;
UnderscoreJs es una librería javascript bastante simple de usar que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript.&lt;br /&gt;
El prefijo usado para usar sus funciones es &amp;quot;_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Algunas de las funciones ==&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
&lt;br /&gt;
Es una funcion que obtiene determinados objetos dentro un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
De un array que contiene objetos personas quiero obtener las que contengan el apellido &amp;quot;Perez&amp;quot;, para eso vamos a usar la funcion filter.&lt;br /&gt;
Esta última recibe como parametro el array que contiene los elementos en el cual queremos realizar la busqueda, &lt;br /&gt;
y como segundo parametro un callback que realiza una iteracion por cada elemento del array. &lt;br /&gt;
Si el callback retorna un valor verdadero, el elemento del array original es duplicado en un array auxiliar. &lt;br /&gt;
Una vez que la iteracion termine la funcion filter retorna el array auxiliar con los resultados de la busqueda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;De la Serna&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.filter(personas, function (persona) {&lt;br /&gt;
    return persona.apellido === &amp;quot;Perez&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
El array devuelto es:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Uniq ===&lt;br /&gt;
&lt;br /&gt;
Es una función que elimina duplicados de un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var names = ['Juan', 'Javier', 'Ernesto', 'Ernesto'];&lt;br /&gt;
_.uniq(names);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado es &lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	&amp;quot;Juan&amp;quot;, &lt;br /&gt;
	&amp;quot;Javier&amp;quot;, &lt;br /&gt;
	&amp;quot;Ernesto&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reduce ===&lt;br /&gt;
&lt;br /&gt;
Esta funcion realiza una suma de los valores que contienen los atributos que nosotros definamos para cierto array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos una array de personas, cada una tiene un nombre y una edad. Lo que queremos hacer es sumar las edades de todas las personas dentro del array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		edad: 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		edad: 20&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		edad: 50&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos como parametro el array de personas, un callback que recibe el resultado de la suma y el elemento del array, &lt;br /&gt;
y como otro parametro el valor inicial de la suma, en este caso será 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.reduce(personas, function (resultado, persona) {&lt;br /&gt;
    return resultado + persona.edad;&lt;br /&gt;
}, 0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
Esto retorna el valor 100.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Estas y muchas otras funciones las pueden encontrar en la pagina oficial de [http://underscorejs.org/ UnderscoreJs].&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6818</id>
		<title>UnderscoreJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6818"/>
				<updated>2013-03-19T19:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Underscore ==&lt;br /&gt;
&lt;br /&gt;
UnderscoreJs es una librería javascript que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript.&lt;br /&gt;
El prefijo usado para usar sus funciones es &amp;quot;_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Algunas de las funciones ==&lt;br /&gt;
&lt;br /&gt;
=== Filter ===&lt;br /&gt;
&lt;br /&gt;
Es una funcion que obtiene determinados objetos dentro un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
De un array que contiene objetos personas quiero obtener las que contengan el apellido &amp;quot;Perez&amp;quot;, para eso vamos a usar la funcion filter.&lt;br /&gt;
Esta última recibe como parametro el array que contiene los elementos en el cual queremos realizar la busqueda, &lt;br /&gt;
y como segundo parametro un callback que realiza una iteracion por cada elemento del array. &lt;br /&gt;
Si el callback retorna un valor verdadero, el elemento del array original es duplicado en un array auxiliar. &lt;br /&gt;
Una vez que la iteracion termine la funcion filter retorna el array auxiliar con los resultados de la busqueda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;De la Serna&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.filter(personas, function (persona) {&lt;br /&gt;
    return persona.apellido === &amp;quot;Perez&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
El array devuelto es:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Uniq ===&lt;br /&gt;
&lt;br /&gt;
Es una función que elimina duplicados de un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var names = ['Juan', 'Javier', 'Ernesto', 'Ernesto'];&lt;br /&gt;
_.uniq(names);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado es &lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	&amp;quot;Juan&amp;quot;, &lt;br /&gt;
	&amp;quot;Javier&amp;quot;, &lt;br /&gt;
	&amp;quot;Ernesto&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reduce ===&lt;br /&gt;
&lt;br /&gt;
Esta funcion realiza una suma de los valores que contienen los atributos que nosotros definamos para cierto array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos una array de personas, cada una tiene un nombre y una edad. Lo que queremos hacer es sumar las edades de todas las personas dentro del array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		edad: 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		edad: 20&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		edad: 50&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos como parametro el array de personas, un callback que recibe el resultado de la suma y el elemento del array, &lt;br /&gt;
y como otro parametro el valor inicial de la suma, en este caso será 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.reduce(personas, function (resultado, persona) {&lt;br /&gt;
    return resultado + persona.edad;&lt;br /&gt;
}, 0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
Esto retorna el valor 100.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Estas y muchas otras funciones las pueden encontrar en la pagina oficial de [http://underscorejs.org/ UnderscoreJs].&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6817</id>
		<title>UnderscoreJs</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=UnderscoreJs&amp;diff=6817"/>
				<updated>2013-03-19T19:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: Página creada con '== Underscore ==  UnderscoreJs es una librería javascript que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript. El pre…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Underscore ==&lt;br /&gt;
&lt;br /&gt;
UnderscoreJs es una librería javascript que nos provee de metodos y funciones para manipular: arreglos, colecciones, funciones y objetos en javascript.&lt;br /&gt;
El prefijo usado para usar sus funciones es &amp;quot;_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Algunas de las funciones ===&lt;br /&gt;
&lt;br /&gt;
== Filter ==&lt;br /&gt;
&lt;br /&gt;
Es una funcion que obtiene determinados objetos dentro un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
De un array que contiene objetos personas quiero obtener las que contengan el apellido &amp;quot;Perez&amp;quot;, para eso vamos a usar la funcion filter.&lt;br /&gt;
Esta última recibe como parametro el array que contiene los elementos en el cual queremos realizar la busqueda, &lt;br /&gt;
y como segundo parametro un callback que realiza una iteracion por cada elemento del array. &lt;br /&gt;
Si el callback retorna un valor verdadero, el elemento del array original es duplicado en un array auxiliar. &lt;br /&gt;
Una vez que la iteracion termine la funcion filter retorna el array auxiliar con los resultados de la busqueda.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		apellido: &amp;quot;De la Serna&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.filter(personas, function (persona) {&lt;br /&gt;
    return persona.apellido === &amp;quot;Perez&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
El array devuelto es:&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
			apellido: &amp;quot;Perez&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uniq ==&lt;br /&gt;
&lt;br /&gt;
Es una función que elimina duplicados de un array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var names = ['Juan', 'Javier', 'Ernesto', 'Ernesto'];&lt;br /&gt;
_.uniq(names);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El resultado es &lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
	&amp;quot;Juan&amp;quot;, &lt;br /&gt;
	&amp;quot;Javier&amp;quot;, &lt;br /&gt;
	&amp;quot;Ernesto&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reduce ==&lt;br /&gt;
&lt;br /&gt;
Esta funcion realiza una suma de los valores que contienen los atributos que nosotros definamos para cierto array.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos una array de personas, cada una tiene un nombre y una edad. Lo que queremos hacer es sumar las edades de todas las personas dentro del array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var personas = [&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Juan&amp;quot;,&lt;br /&gt;
		edad: 30&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Javier&amp;quot;,&lt;br /&gt;
		edad: 20&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
		nombre: &amp;quot;Ernesto&amp;quot;,&lt;br /&gt;
		edad: 50&lt;br /&gt;
	}&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enviamos como parametro el array de personas, un callback que recibe el resultado de la suma y el elemento del array, &lt;br /&gt;
y como otro parametro el valor inicial de la suma, en este caso será 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
_.reduce(personas, function (resultado, persona) {&lt;br /&gt;
    return resultado + persona.edad;&lt;br /&gt;
}, 0);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
							&lt;br /&gt;
Esto retorna el valor 100.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Estas y muchas otras funciones las pueden encontrar en la pagina oficial de [http://underscorejs.org/ UnderscoreJs].&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6812</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6812"/>
				<updated>2013-03-18T19:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]]&lt;br /&gt;
[[JavaScript]] es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.&lt;br /&gt;
&lt;br /&gt;
Al igual que [[Java]], [[JavaScript]] es un lenguaje orientado a objetos propiamente dicho, ya que dispone de Herencia, si bien esta se realiza siguiendo el paradigma de programación basada en prototipos, ya que las nuevas clases se generan clonando las clases base (prototipos) y extendiendo su funcionalidad.&lt;br /&gt;
&lt;br /&gt;
Todos los navegadores modernos interpretan el código [[JavaScript]] integrado dentro de las páginas web. Para interactuar con una página web se provee al lenguaje [[JavaScript]] de una implementación del DOM.&lt;br /&gt;
&lt;br /&gt;
==Frameworks==&lt;br /&gt;
[[JavaScript]] cuenta con infinidad de frameworks y librerias que otorgan diversa funcionalidad. Entre los más conocidos:&lt;br /&gt;
* [[JQuery]], un framework de aplicación base, sumamente extensible.&lt;br /&gt;
* [[Prototype]], un framework de aplicación base que permite definir clases, muy usado.&lt;br /&gt;
* [[Rico]], un framework de componentes de presentación [AJAX].&lt;br /&gt;
* [[Concurrent Thread Javascript]], librería para manejo de hilos.&lt;br /&gt;
&lt;br /&gt;
==Compatibilidad entre navegadores==&lt;br /&gt;
===Problemas con IE===&lt;br /&gt;
====Json is undefined====&lt;br /&gt;
La version de IE7 e IE8 no tiene importado de forma nativa las librerias de Json, por lo tanto hay que importarlas.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; !--[if lt IE 8]&amp;gt;&lt;br /&gt;
     &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;/js/json2.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bajar la libreria de json desde [[https://github.com/douglascrockford/JSON-js aca]].&lt;br /&gt;
&lt;br /&gt;
====Change event listener====&lt;br /&gt;
El comportamiento del listener del evento &amp;quot;change&amp;quot; cuando se lo bindeamos a un radio button es el siguiente:&lt;br /&gt;
&lt;br /&gt;
* en IE 7 el evento se dispara cuando el focus abandona el radio button.&lt;br /&gt;
&lt;br /&gt;
* en Firefox (3.x), Safari (3.x) y opera (96) el evento se dispara al momento de que el radio button es seleccionado, sin esperar a que el focus abandone el radio.&lt;br /&gt;
&lt;br /&gt;
Un workaround para que IE se comporte igual que el resto de los navegadores es el siguiente:&lt;br /&gt;
&lt;br /&gt;
 if ($.browser.msie) {&lt;br /&gt;
     $('input[name=radioXXX]').bind('click', function(){&lt;br /&gt;
       this.blur();&lt;br /&gt;
       this.focus();&lt;br /&gt;
     });&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $('input[name=radioXXX]').bind('change', function(){&lt;br /&gt;
    ........;&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [http://es.wikipedia.org/wiki/JavaScript JavaScript en la Wikipedia]&lt;br /&gt;
* [http://www.theserverside.com/tt/articles/article.tss?l=OOJavaScriptDemonstrated Conceptos y operaciones básicas]&lt;br /&gt;
* [[Test de javascript con QUnit]]&lt;br /&gt;
* [[Node.js]]&lt;br /&gt;
* [[JasmineJs]]&lt;br /&gt;
* [[Integrando JasmineJS con Ant]]&lt;br /&gt;
* [[UnderscoreJs]]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	<entry>
		<id>https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6768</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://dosideas.com/wiki/index.php?title=JavaScript&amp;diff=6768"/>
				<updated>2013-03-12T13:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Favio.tolosa: /* Ver también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:JavaScript]]&lt;br /&gt;
[[JavaScript]] es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.&lt;br /&gt;
&lt;br /&gt;
Al igual que [[Java]], [[JavaScript]] es un lenguaje orientado a objetos propiamente dicho, ya que dispone de Herencia, si bien esta se realiza siguiendo el paradigma de programación basada en prototipos, ya que las nuevas clases se generan clonando las clases base (prototipos) y extendiendo su funcionalidad.&lt;br /&gt;
&lt;br /&gt;
Todos los navegadores modernos interpretan el código [[JavaScript]] integrado dentro de las páginas web. Para interactuar con una página web se provee al lenguaje [[JavaScript]] de una implementación del DOM.&lt;br /&gt;
&lt;br /&gt;
==Frameworks==&lt;br /&gt;
[[JavaScript]] cuenta con infinidad de frameworks y librerias que otorgan diversa funcionalidad. Entre los más conocidos:&lt;br /&gt;
* [[JQuery]], un framework de aplicación base, sumamente extensible.&lt;br /&gt;
* [[Prototype]], un framework de aplicación base que permite definir clases, muy usado.&lt;br /&gt;
* [[Rico]], un framework de componentes de presentación [AJAX].&lt;br /&gt;
* [[Concurrent Thread Javascript]], librería para manejo de hilos.&lt;br /&gt;
&lt;br /&gt;
==Compatibilidad entre navegadores==&lt;br /&gt;
===Problemas con IE===&lt;br /&gt;
====Json is undefined====&lt;br /&gt;
La version de IE7 e IE8 no tiene importado de forma nativa las librerias de Json, por lo tanto hay que importarlas.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; !--[if lt IE 8]&amp;gt;&lt;br /&gt;
     &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;/js/json2.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bajar la libreria de json desde [[https://github.com/douglascrockford/JSON-js aca]].&lt;br /&gt;
&lt;br /&gt;
====Change event listener====&lt;br /&gt;
El comportamiento del listener del evento &amp;quot;change&amp;quot; cuando se lo bindeamos a un radio button es el siguiente:&lt;br /&gt;
&lt;br /&gt;
* en IE 7 el evento se dispara cuando el focus abandona el radio button.&lt;br /&gt;
&lt;br /&gt;
* en Firefox (3.x), Safari (3.x) y opera (96) el evento se dispara al momento de que el radio button es seleccionado, sin esperar a que el focus abandone el radio.&lt;br /&gt;
&lt;br /&gt;
Un workaround para que IE se comporte igual que el resto de los navegadores es el siguiente:&lt;br /&gt;
&lt;br /&gt;
 if ($.browser.msie) {&lt;br /&gt;
     $('input[name=radioXXX]').bind('click', function(){&lt;br /&gt;
       this.blur();&lt;br /&gt;
       this.focus();&lt;br /&gt;
     });&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $('input[name=radioXXX]').bind('change', function(){&lt;br /&gt;
    ........;&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==Ver también==&lt;br /&gt;
* [http://es.wikipedia.org/wiki/JavaScript JavaScript en la Wikipedia]&lt;br /&gt;
* [http://www.theserverside.com/tt/articles/article.tss?l=OOJavaScriptDemonstrated Conceptos y operaciones básicas]&lt;br /&gt;
* [[Test de javascript con QUnit]]&lt;br /&gt;
* [[Node.js]]&lt;br /&gt;
* [[Test en Javascript con JasmineJs, PhantomJs y Ant]]&lt;/div&gt;</summary>
		<author><name>Favio.tolosa</name></author>	</entry>

	</feed>