<?xml version="1.0" encoding="ISO-8859-1"?><!-- generator="wordpress/2.3-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Javascript: clases con argumentos opcionales</title>
	<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/</link>
	<description>desarrollo web con estándares</description>
	<pubDate>Tue, 16 Mar 2010 22:59:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3-alpha</generator>

	<item>
		<title>By: zancom</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-38630</link>
		<author>zancom</author>
		<pubDate>Thu, 10 Jul 2008 20:26:19 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-38630</guid>
		<description>Buenas tardes, estoy estudiando a fondo el javascript y encontre una libreria que puedo usar en un proyecto, pero estoy confundido, aqui les envio una parte a ver si me pueden ayudar.

var dibujar=new Object();

dibujar.evento=function(){this.tipo=null,this.valor=null}; 
dibujar.evento.prototype.initEvent=function(sType,_591e){instrucciones}

primera pregunta: como deduzco yo que dibujar.evento es una subclase de dibujar y no un metodo, sera porque luego tiene opciones de prototype.

dibujar.mover=function(){instrucciones}
dibujar.mover.prototype= new dibujar.event;

segunda pregunta: podria decir tambien dibujar.mover.prototype=new dibujar.event(); cual es la diferencia?

var mover = new dibujar.mover();

tercera pregunta: podria explicarme el significado de esta instruccion y la diferencia con la instruccion anterior

gracias de antemano.</description>
		<content:encoded><![CDATA[<p>Buenas tardes, estoy estudiando a fondo el javascript y encontre una libreria que puedo usar en un proyecto, pero estoy confundido, aqui les envio una parte a ver si me pueden ayudar.</p>
<p>var dibujar=new Object();</p>
<p>dibujar.evento=function(){this.tipo=null,this.valor=null};<br />
dibujar.evento.prototype.initEvent=function(sType,_591e){instrucciones}</p>
<p>primera pregunta: como deduzco yo que dibujar.evento es una subclase de dibujar y no un metodo, sera porque luego tiene opciones de prototype.</p>
<p>dibujar.mover=function(){instrucciones}<br />
dibujar.mover.prototype= new dibujar.event;</p>
<p>segunda pregunta: podria decir tambien dibujar.mover.prototype=new dibujar.event(); cual es la diferencia?</p>
<p>var mover = new dibujar.mover();</p>
<p>tercera pregunta: podria explicarme el significado de esta instruccion y la diferencia con la instruccion anterior</p>
<p>gracias de antemano.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ismael</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-22916</link>
		<author>Ismael</author>
		<pubDate>Wed, 05 Dec 2007 21:02:24 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-22916</guid>
		<description>Rockerox: la diferencia de mi ejemplo es que puedes pasar un hash de argumentos opcionales.
&lt;pre lang="javascript"&gt;
a = new Validador('email', {dominios:2});
&lt;/pre&gt;
En tu ejemplo, si s&#243;lo quieres pasar "dominios" estas obligado tambi&#233;n a pasar expl&#237;citamente "largo_max".</description>
		<content:encoded><![CDATA[<p>Rockerox: la diferencia de mi ejemplo es que puedes pasar un hash de argumentos opcionales.</p>
<pre lang="javascript">
a = new Validador('email', {dominios:2});
</pre>
<p>En tu ejemplo, si s&oacute;lo quieres pasar &#8220;dominios&#8221; estas obligado tambi&eacute;n a pasar expl&iacute;citamente &#8220;largo_max&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rockerox</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-22914</link>
		<author>rockerox</author>
		<pubDate>Wed, 05 Dec 2007 20:50:38 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-22914</guid>
		<description>var Validador = function(campo_id,largo_max,dominios){
	this.campo_id  = campo_id;
	this.largo_max = largo_max &#124;&#124; 10 ;
	this.dominios  = dominios &#124;&#124; 0;
}

Será Algo así lo que buscas ???</description>
		<content:encoded><![CDATA[<p>var Validador = function(campo_id,largo_max,dominios){<br />
	this.campo_id  = campo_id;<br />
	this.largo_max = largo_max || 10 ;<br />
	this.dominios  = dominios || 0;<br />
}</p>
<p>Será Algo así lo que buscas ???</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: coto</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3232</link>
		<author>coto</author>
		<pubDate>Tue, 29 Aug 2006 15:30:23 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3232</guid>
		<description>Gracias Man !!</description>
		<content:encoded><![CDATA[<p>Gracias Man !!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ismael</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3221</link>
		<author>Ismael</author>
		<pubDate>Wed, 23 Aug 2006 23:56:16 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3221</guid>
		<description>Buena pregunta Coto (y gracias por el clarísimo resumen!).
Supongo que es cuestión de preferencias, pero la sintáxis &lt;strong&gt;jSon&lt;/strong&gt;, una vez te acostumbras, puede ser algo más sintética y homogenea, especialmente si usas librerías como Prototype o Scriptaculous que están escritas en ese estilo.
Hay que tener en cuenta que tus dos ejemplos definen una instancia de Object y no una "clase". El método getNombre() está siendo definido directamente sobre una instancia. Para crear una clase y definir métodos que estarán disponibles para todas las instancias:

&lt;pre&gt;
&lt;code&gt;
// Clase y métodos
var Persona = new Function(nombre){
    this.nombre = nombre;
}
Persona.prototype.getNombre = function(){
    return this.nombre;
}
// Instancias
var obj1 = new Persona("Coto");
var obj2 = new Persona("Ismael");

var un_nombre = obj1.getNombre(); //"Coto"
&lt;/code&gt;
&lt;/pre&gt;

Más info en &lt;a href="http://www.estadobeta.com/2006/05/15/javascript-oop/" rel="nofollow"&gt;esta nota&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Buena pregunta Coto (y gracias por el clarísimo resumen!).<br />
Supongo que es cuestión de preferencias, pero la sintáxis <strong>jSon</strong>, una vez te acostumbras, puede ser algo más sintética y homogenea, especialmente si usas librerías como Prototype o Scriptaculous que están escritas en ese estilo.<br />
Hay que tener en cuenta que tus dos ejemplos definen una instancia de Object y no una &#8220;clase&#8221;. El método getNombre() está siendo definido directamente sobre una instancia. Para crear una clase y definir métodos que estarán disponibles para todas las instancias:</p>
<pre>
<code>
// Clase y métodos
var Persona = new Function(nombre){
    this.nombre = nombre;
}
Persona.prototype.getNombre = function(){
    return this.nombre;
}
// Instancias
var obj1 = new Persona("Coto");
var obj2 = new Persona("Ismael");

var un_nombre = obj1.getNombre(); //"Coto"
</code>
</pre>
<p>Más info en <a href="http://www.estadobeta.com/2006/05/15/javascript-oop/" rel="nofollow">esta nota</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: coto</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3220</link>
		<author>coto</author>
		<pubDate>Wed, 23 Aug 2006 23:00:47 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3220</guid>
		<description>Ismael. 

Haciendo un pequeño resumen, si un &lt;strong&gt;objeto&lt;/strong&gt; se puede escribir en javascript del modo 

&lt;code&gt;
var obj = new Object();
obj.nombre = "juan"; // atributo o propiedad.
obj.getNombre = function(){ //metodo
&#160;&#160;&#160;&#160;return this.nombre;
}
&lt;/code&gt;


o bien a através de un hash, como haces mención en &lt;a href="/2006/05/11/json/" rel="nofollow"&gt;otro artículo&lt;/a&gt;

&lt;code&gt;
var obj = {
&#160;&#160;nombre: "Juan",
&#160;&#160;getNombre: function(){
&#160;&#160;&#160;&#160;return this.nombre;
&#160;&#160;}
}
&lt;/code&gt;

luego, estamos de acuerdo que cuando una variable es de tipo "function" sería una &lt;strong&gt;clase&lt;/strong&gt; y luego un &lt;strong&gt;objeto&lt;/strong&gt; sería una instanciación a dicha clase (tal como mencionas en las primeras lineas de este mismo artículo), mi pregunta es la siguiente, ¿en que casos es más útil cada uno de los tres tipos de objetos vistos?
¿hay alguna ventaja de usar new Object por ejemplo?</description>
		<content:encoded><![CDATA[<p>Ismael. </p>
<p>Haciendo un pequeño resumen, si un <strong>objeto</strong> se puede escribir en javascript del modo </p>
<p><code><br />
var obj = new Object();<br />
obj.nombre = "juan"; // atributo o propiedad.<br />
obj.getNombre = function(){ //metodo<br />
&nbsp;&nbsp;&nbsp;&nbsp;return this.nombre;<br />
}<br />
</code></p>
<p>o bien a através de un hash, como haces mención en <a href="/2006/05/11/json/" rel="nofollow">otro artículo</a></p>
<p><code><br />
var obj = {<br />
&nbsp;&nbsp;nombre: "Juan",<br />
&nbsp;&nbsp;getNombre: function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;return this.nombre;<br />
&nbsp;&nbsp;}<br />
}<br />
</code></p>
<p>luego, estamos de acuerdo que cuando una variable es de tipo &#8220;function&#8221; sería una <strong>clase</strong> y luego un <strong>objeto</strong> sería una instanciación a dicha clase (tal como mencionas en las primeras lineas de este mismo artículo), mi pregunta es la siguiente, ¿en que casos es más útil cada uno de los tres tipos de objetos vistos?<br />
¿hay alguna ventaja de usar new Object por ejemplo?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: EstadoBeta &#187; Archivo &#187; Prototype</title>
		<link>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3180</link>
		<author>EstadoBeta &#187; Archivo &#187; Prototype</author>
		<pubDate>Sat, 05 Aug 2006 19:58:25 +0000</pubDate>
		<guid>http://www.estadobeta.com/2006/07/26/javascript-clases-con-argumentos-opcionales/#comment-3180</guid>
		<description>[...] Y eso es lo b&#225;sico de Ajax. El tercer argumento de Ajax.Updater es un objeto de par&#225;metros opcionales. Ah&#237; es posible definir callbacks o funciones que se ejecutar&#225;n seg&#250;n la petici&#243;n Ajax termine con exito o fracase. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Y eso es lo b&aacute;sico de Ajax. El tercer argumento de Ajax.Updater es un objeto de par&aacute;metros opcionales. Ah&iacute; es posible definir callbacks o funciones que se ejecutar&aacute;n seg&uacute;n la petici&oacute;n Ajax termine con exito o fracase. [&#8230;]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
