<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: create(), creación de elementos más rápido</title>
	<atom:link href="http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/</link>
	<description>Desarrollo web, Wordpress, y alguna cosilla más</description>
	<lastBuildDate>Mon, 22 Mar 2010 03:31:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: Jaquelin</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52740</link>
		<dc:creator>Jaquelin</dc:creator>
		<pubDate>Thu, 18 Dec 2008 23:09:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52740</guid>
		<description>Muy bueno, gracias :).</description>
		<content:encoded><![CDATA[<p>Muy bueno, gracias <img src='http://www.anieto2k.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: gbt2908</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52500</link>
		<dc:creator>gbt2908</dc:creator>
		<pubDate>Sun, 07 Dec 2008 00:29:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52500</guid>
		<description>*faltó un return el; en la ultima linea

en realidad aprovecha la sintaxis corta de if, boolean ? val1 : val2 donde si boolean es true devuelve val1, sino, devuelvo val2 y que en javascript la sintaxis obj1 &#124;&#124; obj2 devuelve obj2 si obj1 no esta definido

lo primero que hice es que el script defina el dentro del primer if:
de esto:
&lt;pre&gt;&lt;code&gt;
var el = document.createElement(type);
if(opt.style){
	extend(opt.style, el.style);
	delete opt.style
}
&lt;/code&gt;&lt;/pre&gt;
a esto:
&lt;pre&gt;&lt;code&gt;
if( (el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style ){
	extend(opt.style, el.style);
	delete opt.style
}
&lt;/code&gt;&lt;/pre&gt;
que funciona igual, solo que no define el con &lt;code&gt;var (&lt;/code&gt;y sus consecuencias)

después hice que se borre &lt;code&gt;opt.style&lt;/code&gt; cuando intente resolver el valor de un tercer parámetro de la función &lt;code&gt;extend&lt;/code&gt; del estilo (javascript no tiene problema si se pasa un parámetro mas o menos de los que requiere una función)

osea de esto:
&lt;pre&gt;&lt;code&gt;
extend(opt.style, el.style);
delete opt.style;
&lt;/code&gt;&lt;/pre&gt;
a esto:
&lt;pre&gt;&lt;code&gt;
extend(opt.style, el.style, delete opt.style);
&lt;/code&gt;&lt;/pre&gt;

luego hice lo mismo con &lt;code&gt;parent.appendChild(el);&lt;/code&gt;, solo que le agregue un&lt;code&gt; if paren&lt;/code&gt;t
de esto:
&lt;pre&gt;&lt;code&gt;
if( parent ){
	parent.appendChild(el);
}
extend( opt, el );
&lt;/code&gt;&lt;/pre&gt;
a esto:
&lt;pre&gt;&lt;code&gt;
extend( opt, el, parent ? parent.appendChild(el) : 0 );
&lt;/code&gt;&lt;/pre&gt;

luego cambié la sintaxis del &lt;code&gt;if&lt;/code&gt; por la forma corta y junté el &lt;code&gt;extend&lt;/code&gt; con el &lt;code&gt;return&lt;/code&gt;, de esto:
&lt;pre&gt;&lt;code&gt;
if( (el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style ){
	extend(opt.style, el.style, delete opt.style);
}
extend( opt, el, parent ? parent.appendChild(el) : 0 );
return el;
&lt;/code&gt;&lt;/pre&gt;
a esto:
&lt;pre&gt;&lt;code&gt;
( (el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 );
return extend( opt, el, parent ? parent.appendChild(el) : 0 );
&lt;/code&gt;&lt;/pre&gt;

por ultimo junte las dos partes de esta forma:
parte1 &#124;&#124; 1 ? parte2 : 0;
agregandole un &#124;&#124; 1 para que siempre se corra la parte 2 y quedo así:
&lt;pre&gt;&lt;code&gt;
function create(type, opt, parent){
	return ( (el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 ) &#124;&#124; 1 ? extend( opt, el, parent ? parent.appendChild(el) : 0 ) : 0;
}
&lt;/code&gt;&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>*faltó un return el; en la ultima linea</p>
<p>en realidad aprovecha la sintaxis corta de if, boolean ? val1 : val2 donde si boolean es true devuelve val1, sino, devuelvo val2 y que en javascript la sintaxis obj1 || obj2 devuelve obj2 si obj1 no esta definido</p>
<p>lo primero que hice es que el script defina el dentro del primer if:<br />
de esto:</p>
<pre><code>
var el = document.createElement(type);
if(opt.style){
	extend(opt.style, el.style);
	delete opt.style
}
</code></pre>
<p>a esto:</p>
<pre><code>
if( (el = document.createElement(type) || true) &amp;&amp; opt.style ){
	extend(opt.style, el.style);
	delete opt.style
}
</code></pre>
<p>que funciona igual, solo que no define el con <code>var (</code>y sus consecuencias)</p>
<p>después hice que se borre <code>opt.style</code> cuando intente resolver el valor de un tercer parámetro de la función <code>extend</code> del estilo (javascript no tiene problema si se pasa un parámetro mas o menos de los que requiere una función)</p>
<p>osea de esto:</p>
<pre><code>
extend(opt.style, el.style);
delete opt.style;
</code></pre>
<p>a esto:</p>
<pre><code>
extend(opt.style, el.style, delete opt.style);
</code></pre>
<p>luego hice lo mismo con <code>parent.appendChild(el);</code>, solo que le agregue un<code> if paren</code>t<br />
de esto:</p>
<pre><code>
if( parent ){
	parent.appendChild(el);
}
extend( opt, el );
</code></pre>
<p>a esto:</p>
<pre><code>
extend( opt, el, parent ? parent.appendChild(el) : 0 );
</code></pre>
<p>luego cambié la sintaxis del <code>if</code> por la forma corta y junté el <code>extend</code> con el <code>return</code>, de esto:</p>
<pre><code>
if( (el = document.createElement(type) || true) &amp;&amp; opt.style ){
	extend(opt.style, el.style, delete opt.style);
}
extend( opt, el, parent ? parent.appendChild(el) : 0 );
return el;
</code></pre>
<p>a esto:</p>
<pre><code>
( (el = document.createElement(type) || true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 );
return extend( opt, el, parent ? parent.appendChild(el) : 0 );
</code></pre>
<p>por ultimo junte las dos partes de esta forma:<br />
parte1 || 1 ? parte2 : 0;<br />
agregandole un || 1 para que siempre se corra la parte 2 y quedo así:</p>
<pre><code>
function create(type, opt, parent){
	return ( (el = document.createElement(type) || true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 ) || 1 ? extend( opt, el, parent ? parent.appendChild(el) : 0 ) : 0;
}
</code></pre>
]]></content:encoded>
	</item>
	<item>
		<title>Por: gbt2908</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52498</link>
		<dc:creator>gbt2908</dc:creator>
		<pubDate>Sat, 06 Dec 2008 23:49:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52498</guid>
		<description>@Jose no es que este ofuscado, es solo una mala constumbre que tengo de meter todo el codigo en un oneliner aprovechando algunas singularidades de javascript para hacerlo (en un blog las listaban, no recuerdo cual)

el codigo para que lo entiendas es este:

&lt;pre&gt;&lt;code&gt;
function create(type, opt, parent){
	var el = document.createElement(type);
	if(opt.style){
		extend(opt.style, el.style);
		delete opt.style
	}
	if( parent ){
		parent.appendChild(el)
	}
	extend( opt, el );
}
&lt;/code&gt;&lt;/pre&gt;

en el anterior script se correria en ese orden</description>
		<content:encoded><![CDATA[<p>@Jose no es que este ofuscado, es solo una mala constumbre que tengo de meter todo el codigo en un oneliner aprovechando algunas singularidades de javascript para hacerlo (en un blog las listaban, no recuerdo cual)</p>
<p>el codigo para que lo entiendas es este:</p>
<pre><code>
function create(type, opt, parent){
	var el = document.createElement(type);
	if(opt.style){
		extend(opt.style, el.style);
		delete opt.style
	}
	if( parent ){
		parent.appendChild(el)
	}
	extend( opt, el );
}
</code></pre>
<p>en el anterior script se correria en ese orden</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Jose</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52473</link>
		<dc:creator>Jose</dc:creator>
		<pubDate>Fri, 05 Dec 2008 17:50:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52473</guid>
		<description>Me intriga saber los motivos por los que el código de gbt29 está ofuscado u ofusca mi mente. Por cierto, hay una pequeña errata, falta una &lt;b&gt;var el&lt;/b&gt; por algún lado, vamos es una suposición, ya que a la vista del código los mismo se pretende algún side-effect que no alcanzo a ver, alguna extraña sinergia entre la global &lt;b&gt;el (que es en este momento) y ese misterioso &lt;/b&gt;&lt;b&gt;true&lt;/b&gt; que aparece como segundo operador del primer &lt;b&gt;&#124;&#124;&lt;/b&gt; de la &#039;schemeatica&#039; sentencia.</description>
		<content:encoded><![CDATA[<p>Me intriga saber los motivos por los que el código de gbt29 está ofuscado u ofusca mi mente. Por cierto, hay una pequeña errata, falta una <b>var el</b> por algún lado, vamos es una suposición, ya que a la vista del código los mismo se pretende algún side-effect que no alcanzo a ver, alguna extraña sinergia entre la global <b>el (que es en este momento) y ese misterioso </b><b>true</b> que aparece como segundo operador del primer <b>||</b> de la &#8217;schemeatica&#8217; sentencia.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Ignacio</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52458</link>
		<dc:creator>Ignacio</dc:creator>
		<pubDate>Fri, 05 Dec 2008 09:42:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52458</guid>
		<description>Buenísima idea. Muchas gracias.</description>
		<content:encoded><![CDATA[<p>Buenísima idea. Muchas gracias.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: zazk</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52445</link>
		<dc:creator>zazk</dc:creator>
		<pubDate>Thu, 04 Dec 2008 22:03:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52445</guid>
		<description>Y no sólo más rápidamente, creo que es una buena pŕactica enviar como parametros de un objeto y crear una codificación más elegante</description>
		<content:encoded><![CDATA[<p>Y no sólo más rápidamente, creo que es una buena pŕactica enviar como parametros de un objeto y crear una codificación más elegante</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: aNieto2k</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52433</link>
		<dc:creator>aNieto2k</dc:creator>
		<pubDate>Thu, 04 Dec 2008 15:10:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52433</guid>
		<description>&lt;a href=&quot;#comment-52426&quot; title=&quot;Responder a gbt29&quot; rel=&quot;nofollow&quot;&gt;@gbt29&lt;/a&gt;: Buenísimo!, no había pensado en el &lt;code&gt;style&lt;/code&gt;.

He quedado perfecta, me la apunto.
&lt;a href=&quot;#comment-52432&quot; title=&quot;Responder a inyaka&quot; rel=&quot;nofollow&quot;&gt;@inyaka&lt;/a&gt;: Pues sirve para crear elementos más rápidamente. Osea en lugar de hacer algo asi:

&lt;pre&gt;&lt;code&gt;
var s = document.createElement(&quot;script&quot;);
s.src = &quot;...&quot;;
s.type=&quot;text/javascript&quot;;
document.body.appendChild(s);
&lt;/code&gt;&lt;/pre&gt;

podrías hacer algo asi:

&lt;pre&gt;&lt;code&gt;
create(&quot;script&quot;, {
     src: &quot;...&quot;,
     type: &quot;text/javascript&quot;
}, document.body);
&lt;/code&gt;&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p><a href="#comment-52426" title="Responder a gbt29" rel="nofollow">@gbt29</a>: Buenísimo!, no había pensado en el <code>style</code>.</p>
<p>He quedado perfecta, me la apunto.<br />
<a href="#comment-52432" title="Responder a inyaka" rel="nofollow">@inyaka</a>: Pues sirve para crear elementos más rápidamente. Osea en lugar de hacer algo asi:</p>
<pre><code>
var s = document.createElement("script");
s.src = "...";
s.type="text/javascript";
document.body.appendChild(s);
</code></pre>
<p>podrías hacer algo asi:</p>
<pre><code>
create("script", {
     src: "...",
     type: "text/javascript"
}, document.body);
</code></pre>
]]></content:encoded>
	</item>
	<item>
		<title>Por: inyaka</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52432</link>
		<dc:creator>inyaka</dc:creator>
		<pubDate>Thu, 04 Dec 2008 14:54:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52432</guid>
		<description>no entendi ¿para que sirve esto?  osea ¿en que lo podemos aplicar?</description>
		<content:encoded><![CDATA[<p>no entendi ¿para que sirve esto?  osea ¿en que lo podemos aplicar?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: gbt29</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52427</link>
		<dc:creator>gbt29</dc:creator>
		<pubDate>Thu, 04 Dec 2008 03:14:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52427</guid>
		<description>perdon, es asi:
&lt;pre&gt;&lt;code&gt;
function create(type, opt, parent){
	return ( ((el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style)?extend(opt.style,el.style,delete opt.style):0 ) &#124;&#124; 1 ? extend(opt,el,parent?parent.appendChild(el):0) : 0;
}
&lt;/code&gt;&lt;/pre&gt;

no estaba devolviendo el objeto creado antes</description>
		<content:encoded><![CDATA[<p>perdon, es asi:</p>
<pre><code>
function create(type, opt, parent){
	return ( ((el = document.createElement(type) || true) &amp;&amp; opt.style)?extend(opt.style,el.style,delete opt.style):0 ) || 1 ? extend(opt,el,parent?parent.appendChild(el):0) : 0;
}
</code></pre>
<p>no estaba devolviendo el objeto creado antes</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: gbt29</title>
		<link>http://www.anieto2k.com/2008/12/04/create-creacion-de-elementos-mas-rapido/#comment-52426</link>
		<dc:creator>gbt29</dc:creator>
		<pubDate>Thu, 04 Dec 2008 03:03:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.anieto2k.com/?p=6962#comment-52426</guid>
		<description>&lt;pre&gt;&lt;code&gt;
function create(type, opt, parent){
	return ( ((el = document.createElement(type) &#124;&#124; true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 ) &#124;&#124; true) &amp;&amp; extend(opt,el,parent?parent.appendChild(el):0);
}

create(&quot;a&quot;,{
	    innerHTML: &quot;Hola&quot;,
	    href: &quot;http://www.anieto2k.com&quot;,
	    title: &quot;Hola&quot;,
	    onclick: function(){
	        alert(&quot;Hola&quot;);
	    },
		style: {
			color: &quot;#444&quot;,
			fontSize: &quot;26px&quot;
		}
	},document.body);
&lt;/code&gt;&lt;/pre&gt;

xD</description>
		<content:encoded><![CDATA[<pre><code>
function create(type, opt, parent){
	return ( ((el = document.createElement(type) || true) &amp;&amp; opt.style ? extend(opt.style, el.style, delete opt.style) : 0 ) || true) &amp;&amp; extend(opt,el,parent?parent.appendChild(el):0);
}

create("a",{
	    innerHTML: "Hola",
	    href: "http://www.anieto2k.com",
	    title: "Hola",
	    onclick: function(){
	        alert("Hola");
	    },
		style: {
			color: "#444",
			fontSize: "26px"
		}
	},document.body);
</code></pre>
<p>xD</p>
]]></content:encoded>
	</item>
</channel>
</rss>
