<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">

<channel>
<title>Blog bloc: Javascript</title>
<link>http://widea.zoomblog.com/</link>
<description>Blog sobre programaci&#243;n y dise&#241;o web de un programador en Sevilla</description>
<dc:language>es</dc:language>
<dc:date>2006-04-08T12:03:00+01:00</dc:date>
<lastBuildDate>Mon, 12 May 2008 08:13:15 GMT</lastBuildDate>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
<image>
<title>ZoomBlog</title>
<url>http://www.zoomblog.com/pics/blogs/ZoomBlog_mini.gif</url>
<link>http://www.zoomblog.com/</link>
</image>

<item>
 <title>Object Literal y los nombres de espacio en javascript</title>
<link>http://widea.zoomblog.com/archivo/2006/04/08/object-Literal-y-los-nombres-de-espaci.html</link>
 <guid isPermaLink="true">http://widea.zoomblog.com/archivo/2006/04/08/object-Literal-y-los-nombres-de-espaci.html</guid>
 <description>
 <![CDATA[
C&#243;mo todo el mundo sabe, javscript puede ser un lenguaje muy feo y s&#243;lo algunos hab&#237;an conseguido exprimir la quintaesencia de este lenguaje, como se hac&#237;a en dhtmlcentral.com, cuyas librer&#237;as han sido toda una ayuda para los que programamos en javascript desde hace a&#241;os.<br />No obstante, eso fue una etapa y los tiempos cambian, y se han buscado nuevas formas que nos acerquen al tipo de lenguaje orientado a objeto propiamente dicho como es java o m&#225;s actual, .net.<br />Siempre se ha pensado que era imposible crear clases en javascript, y es as&#237;,jaja, pero han buscado formas de imitarlo mediante la creaci&#243;n de objetos, lo que se ha venido a llamar en el mundo angl&#243;fono, <b>namespaced javascript</b> o <b>object Literal</b>.<br />Antes de entrar en materia, os har&#233; un resumen de lo que estoy diciendo para que nos entendamos.<br /><br /><strong>ANTES:</strong><br />Antes todo eran funciones y entonces siempre pod&#237;a pasar que si inclu&#237;amos 2 archivos de javascript distintos pudieran compartir nombres de funciones similares, y al m&#225;s frecuentes, variables globales similares, y por lo tanto, ambos scripts dejaban de funcionar.<br />Como mencionaba, en dhtmlcentral.com y en otros sitios, propulsaron una forma propia de javascript de crear pseudo-classes, se hac&#237;a as&#237;:<br /><span style="color: rgb(0, 153, 0);">function bola()</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">{</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">this.moverx=moverx;</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">this.movery=movery;</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">function moverx()</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">{</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">function movery()</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">{</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">nuevaBola=new bola();</span><br /><br /><br />O sea cre&#225;bamos un objeto, que ten&#237;a asociado unos pseudo-m&#233;todos, pero el problema de que otro script tuviera una funci&#243;n con el mismo nombre segu&#237;a ah&#237;.Hab&#237;a que fastidiarse.<br /><strong>AHORA:</strong><br />Hoy d&#237;a, con el surgimiento de Ajax se le est&#225; dando mucho bombo a otra forma de imitar las clases, y no es algo nuevo, pero lo cierto es que es cada vez m&#225;s frecuente. <br />La "nueva forma", el javascript con nombre de espacio, no crea clases, crea objetos a los que se les a&#241;ade propiedades, que van a hacer las veces de variables locales por su puesto p&#250;blicas (aqu&#237; no hay distinciones del tipo privada o protegida) y m&#233;todos, m&#233;todos que no van a poder pisarse por otros scripts, aunque por supuesto nada de m&#233;todos con la propiedad <i>override</i> ni <i>sealed</i> ni nada que se le parezca. Es un truco, no una soluci&#243;n final.<br />Si has llegado hasta aqu&#237;, y no sabes de que estoy hablando, este ejemplo te har&#233; comprender:<br /><span style="color: rgb(0, 153, 0);">myscript=new Object();</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">myscript.current=1;</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">myscript.init=function(){</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; // some code</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">myscript.validate=function(){</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; // some code</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br /><br />Otro ejemplo con el c&#243;digo m&#225;s resumido, no voy a decir m&#225;s elegante, pero mejor para tener todo en un s&#243;lo bloque:<br /><span style="color: rgb(0, 153, 0);">myscript={</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; current:1,</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; init:function(){</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp;&nbsp;&nbsp; // code</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; },</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp; validate:function(){</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp;&nbsp;&nbsp; // code </span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">&nbsp;}</span><br style="color: rgb(0, 153, 0);" /><span style="color: rgb(0, 153, 0);">}</span><br />Por lo tanto, os animo aquello que hay&#225;is tenido la suerte o la desgracia de llegar hasta aqu&#237; que para cuando teng&#225;is tiempo en el trabajo de programar bien javascript y sea un proyecto algo complejo o reutilizable, coj&#225;is las riendas de los nombres de espacio en javascript y empec&#233;is a crear objetos.
 ]]>
</description>
 <dc:date>2006-04-08T12:03:00+01:00</dc:date>
 <dc:creator>dactivo</dc:creator>
</item>

</channel>
</rss>

