<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Beautiful JS</title>
 <link href="http://beautifuljs.net/atom.xml" rel="self"/>
 <link href="http://beautifuljs.net/"/>
 <updated>2011-11-02T05:44:35-07:00</updated>
 <id>http://beautifuljs.net/</id>
 <author>
   <name>Ugly JS</name>
 </author>

 
 <entry>
   <title>Underscore's pluck</title>
   <link href="http://beautifuljs.net/2011/11/02/underscore-pluck"/>
   <updated>2011-11-02T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/11/02/underscore-pluck</id>
   <content type="html">&lt;p&gt;Underscore has taken a common use-case of the conventional &lt;code&gt;map&lt;/code&gt; method and made it a method of its own, &lt;a href='http://documentcloud.github.com/underscore/#pluck'&gt;&lt;code&gt;pluck&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='nx'&gt;_&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;pluck&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;key&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
  &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;_&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;map&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;value&lt;/span&gt;&lt;span class='p'&gt;){&lt;/span&gt; &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;value&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='nx'&gt;key&lt;/span&gt;&lt;span class='p'&gt;];&lt;/span&gt; &lt;span class='p'&gt;});&lt;/span&gt;
&lt;span class='p'&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It takes an array or object and plucks values out of its members:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;a&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nb'&gt;document&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;getElementsByTagName&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='s1'&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
&lt;span class='nx'&gt;_&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;pluck&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;a&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s1'&gt;&amp;#39;href&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt; &lt;span class='c1'&gt;// get all `href` attributes as an array&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s dead simple, but proves how valuable it is to abstract based on common usage.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS. Please check out the new &lt;a href='http://jsapi.info'&gt;jsapi.info&lt;/a&gt;, a site I created to explore the source of various libraries, via which I discovered &lt;code&gt;pluck&lt;/code&gt;!&lt;/em&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>jQuery's isPlainObject</title>
   <link href="http://beautifuljs.net/2011/10/07/jquery-isplainobject"/>
   <updated>2011-10-07T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/10/07/jquery-isplainobject</id>
   <content type="html">&lt;p&gt;jQuery&amp;#8217;s &lt;a href='http://api.jquery.com/jQuery.isPlainObject'&gt;&lt;code&gt;isPlainObject&lt;/code&gt;&lt;/a&gt; returns true if the argument is a regular object, i.e. one created via the &lt;code&gt;Object&lt;/code&gt; constructor or object literal (&lt;code&gt;{...}&lt;/code&gt;).&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;//...&lt;/span&gt;
&lt;span class='nx'&gt;isPlainObject&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
    &lt;span class='c1'&gt;// Must be an Object.&lt;/span&gt;
    &lt;span class='c1'&gt;// Because of IE, we also have to check the presence of the constructor property.&lt;/span&gt;
    &lt;span class='c1'&gt;// Make sure that DOM nodes and window objects don&amp;#39;t pass through, as well&lt;/span&gt;
    &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='o'&gt;!&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt; &lt;span class='o'&gt;||&lt;/span&gt; &lt;span class='nx'&gt;jQuery&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;!==&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;object&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;||&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeType&lt;/span&gt; &lt;span class='o'&gt;||&lt;/span&gt; &lt;span class='nx'&gt;jQuery&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;isWindow&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='kc'&gt;false&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='p'&gt;}&lt;/span&gt;

    &lt;span class='k'&gt;try&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
        &lt;span class='c1'&gt;// Not own constructor property must be Object&lt;/span&gt;
        &lt;span class='k'&gt;if&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;constructor&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class='o'&gt;!&lt;/span&gt;&lt;span class='nx'&gt;hasOwn&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;call&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;constructor&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            &lt;span class='o'&gt;!&lt;/span&gt;&lt;span class='nx'&gt;hasOwn&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;call&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;constructor&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;prototype&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;isPrototypeOf&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
            &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='kc'&gt;false&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
        &lt;span class='p'&gt;}&lt;/span&gt;
    &lt;span class='p'&gt;}&lt;/span&gt; &lt;span class='k'&gt;catch&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;e&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
        &lt;span class='c1'&gt;// IE8,9 Will throw exceptions on certain host objects #9897&lt;/span&gt;
        &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='kc'&gt;false&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='p'&gt;}&lt;/span&gt;

    &lt;span class='c1'&gt;// Own properties are enumerated firstly, so to speed up,&lt;/span&gt;
    &lt;span class='c1'&gt;// if last one is own, then all properties are own.&lt;/span&gt;

    &lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;key&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;key&lt;/span&gt; &lt;span class='k'&gt;in&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{}&lt;/span&gt;

    &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;key&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='kc'&gt;undefined&lt;/span&gt; &lt;span class='o'&gt;||&lt;/span&gt; &lt;span class='nx'&gt;hasOwn&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;call&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;key&lt;/span&gt; &lt;span class='p'&gt;);&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt; &lt;span class='c1'&gt;//...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This is nice to know too:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;// Own properties are enumerated firstly, so to speed up,&lt;/span&gt;
&lt;span class='c1'&gt;// if last one is own, then all properties are own.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
 </entry>
 
 <entry>
   <title>DOM CSS normalization</title>
   <link href="http://beautifuljs.net/2011/10/05/dom-css-normalize"/>
   <updated>2011-10-05T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/10/05/dom-css-normalize</id>
   <content type="html">&lt;p&gt;I think this DOM &amp;#8220;hack&amp;#8221; epitomises the idea of &amp;#8220;beauty in function&amp;#8221; quite well:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;// `props` is a hash of animate&amp;#39;able CSS props,&lt;/span&gt;
&lt;span class='c1'&gt;// like &amp;quot;width&amp;quot;, &amp;quot;padding&amp;quot;, &amp;quot;borderLeftWidth&amp;quot;, &amp;quot;color&amp;quot; etc.&lt;/span&gt;

&lt;span class='kd'&gt;function&lt;/span&gt; &lt;span class='nx'&gt;normalize&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;style&lt;/span&gt;&lt;span class='p'&gt;){&lt;/span&gt;
    &lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;css&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;rules&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='p'&gt;{},&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;props&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;length&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;v&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='nx'&gt;parseEl&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;innerHTML&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='s1'&gt;&amp;#39;&amp;lt;div style=&amp;quot;&amp;#39;&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;&lt;span class='nx'&gt;style&lt;/span&gt;&lt;span class='o'&gt;+&lt;/span&gt;&lt;span class='s1'&gt;&amp;#39;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='nx'&gt;css&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;parseEl&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;childNodes&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;].&lt;/span&gt;&lt;span class='nx'&gt;style&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
    &lt;span class='k'&gt;while&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='o'&gt;--&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='k'&gt;if&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;v&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;css&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='nx'&gt;props&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]])&lt;/span&gt; &lt;span class='nx'&gt;rules&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='nx'&gt;props&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='p'&gt;]]&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;parse&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;v&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
    &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;rules&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s not &lt;em&gt;pretty&lt;/em&gt; code, but what it does is quite clever. It takes a style string, such as &lt;code&gt;border:1px solid #f00;width:200px;&lt;/code&gt; and noramlizes it into its more specific properties, but only those properties that can be animated. For &lt;code&gt;border&lt;/code&gt; this would be &lt;code&gt;borderLeftWidth&lt;/code&gt;, &lt;code&gt;borderLeftColor&lt;/code&gt;, &lt;code&gt;borderTopWidth&lt;/code&gt; etc.&lt;/p&gt;

&lt;p&gt;Doing this &lt;em&gt;without&lt;/em&gt; taking advantage of the inherent normalization that occurs within the DOM would require more code and be more liable to break or have inconsistencies between itself and the actual DOM.&lt;/p&gt;

&lt;p&gt;The above code is from Thomas Fuchs&amp;#8217; &lt;a href='https://github.com/madrobby/emile/blob/master/emile.js'&gt;emile.js&lt;/a&gt;. If you&amp;#8217;re looking for a tiny and swift animation helper then &lt;em&gt;emile&lt;/em&gt; works well. I will also put a word in for a respectable fork, which exposes a slightly better API and more readable source: &lt;a href='https://github.com/ded/emile'&gt;ded/emile&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Looping with freedom</title>
   <link href="http://beautifuljs.net/2011/10/02/loop-freedom"/>
   <updated>2011-10-02T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/10/02/loop-freedom</id>
   <content type="html">&lt;p&gt;Loops don&amp;#8217;t have to look like this:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='nx'&gt;array&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;length&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='o'&gt;++&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;#8230; that&amp;#8217;s how boring people write loops. &amp;#8220;But&amp;#8221;, you say, &amp;#8220;That&amp;#8217;s convention and therefore is the most readable format&amp;#8221;.&lt;/p&gt;

&lt;p&gt;True, but let&amp;#8217;s be honest: variations of the above aren&amp;#8217;t exactly challenging to grasp, and once you know a truthy expression from a falsey one, and the difference between &lt;a href='http://bclary.com/2004/11/07/#a-11.4.4'&gt;prefix&lt;/a&gt; (&lt;code&gt;++i&lt;/code&gt;) and &lt;a href='http://bclary.com/2004/11/07/#a-11.3.1'&gt;postfix&lt;/a&gt; (&lt;code&gt;i++&lt;/code&gt;) incrementers, there really is no point in holding back.&lt;/p&gt;

&lt;p&gt;You don&amp;#8217;t have to be entirely conventional.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;l&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;a&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;length&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='nx'&gt;l&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='o'&gt;++&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt; &lt;span class='c1'&gt;// cached length&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='o'&gt;-&lt;/span&gt;&lt;span class='mi'&gt;1&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt; &lt;span class='nx'&gt;l&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;a&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;length&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='o'&gt;++&lt;/span&gt;&lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;&amp;lt;&lt;/span&gt; &lt;span class='nx'&gt;l&lt;/span&gt;&lt;span class='p'&gt;;);&lt;/span&gt; &lt;span class='c1'&gt;// bundled condition (increment+test)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='k'&gt;for&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;a&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;length&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt; &lt;span class='nx'&gt;i&lt;/span&gt;&lt;span class='o'&gt;--&lt;/span&gt;&lt;span class='p'&gt;;);&lt;/span&gt; &lt;span class='c1'&gt;// reverse loop &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;// The body of the loop makes changes that&amp;#39;ll affect&lt;/span&gt;
&lt;span class='c1'&gt;// the evaluation of the condition. E.g. removing nodes:&lt;/span&gt;
&lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;node&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;firstChild&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
    &lt;span class='nx'&gt;node&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;removeChild&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;node&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;firstChild&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;// Do something with node and its following siblings&lt;/span&gt;
&lt;span class='k'&gt;do&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt; &lt;span class='p'&gt;}&lt;/span&gt; &lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;node&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;node&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nextSibling&lt;/span&gt;&lt;span class='p'&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;A loop&amp;#8217;s body is expendable too:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='k'&gt;while&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;
    &lt;span class='nx'&gt;div&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;innerHTML&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='s1'&gt;&amp;#39;&amp;lt;!--[if gt IE &amp;#39;&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='o'&gt;++&lt;/span&gt;&lt;span class='nx'&gt;v&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='o'&gt;+&lt;/span&gt; &lt;span class='s1'&gt;&amp;#39;]&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;![endif]--&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
    &lt;span class='nx'&gt;all&lt;/span&gt;&lt;span class='p'&gt;[&lt;/span&gt;&lt;span class='mi'&gt;0&lt;/span&gt;&lt;span class='p'&gt;]&lt;/span&gt;
&lt;span class='p'&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;That last one&amp;#8217;s from here: &lt;a href='https://gist.github.com/527683'&gt;https://gist.github.com/527683&lt;/a&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Backbone events definition</title>
   <link href="http://beautifuljs.net/2011/10/01/backbone-event-def"/>
   <updated>2011-10-01T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/10/01/backbone-event-def</id>
   <content type="html">&lt;p&gt;&lt;a href='https://github.com/documentcloud/backbone'&gt;Backbone.js&lt;/a&gt; allows you to define delegated-events for your views in a neat little hash in which you specify the event name, the selector (the context being the view itself) and a method-name to call on the view instance:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='kd'&gt;var&lt;/span&gt; &lt;span class='nx'&gt;FooView&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='nx'&gt;Backbone&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;View&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;extend&lt;/span&gt;&lt;span class='p'&gt;({&lt;/span&gt;

	&lt;span class='nx'&gt;events&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;dblclick&amp;quot;&lt;/span&gt;                &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;open&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;click .icon.doc&amp;quot;&lt;/span&gt;         &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;select&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;contextmenu .icon.doc&amp;quot;&lt;/span&gt;   &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;showMenu&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;click .show_notes&amp;quot;&lt;/span&gt;       &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;toggleNotes&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;click .title .lock&amp;quot;&lt;/span&gt;      &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;editAccessLevel&amp;quot;&lt;/span&gt;&lt;span class='p'&gt;,&lt;/span&gt;
	    &lt;span class='s2'&gt;&amp;quot;mouseover .title .date&amp;quot;&lt;/span&gt;  &lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;showTooltip&amp;quot;&lt;/span&gt;
	&lt;span class='p'&gt;},&lt;/span&gt;

	&lt;span class='c1'&gt;//...&lt;/span&gt;

&lt;span class='p'&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;See &lt;a href='http://documentcloud.github.com/backbone/#View-delegateEvents'&gt;the documentation for Backbone&amp;#8217;s delegateEvents&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Sizzle's filters</title>
   <link href="http://beautifuljs.net/2011/09/30/sizzle-filters"/>
   <updated>2011-09-30T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/09/30/sizzle-filters</id>
   <content type="html">&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;//...&lt;/span&gt;

&lt;span class='nx'&gt;radio&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	&lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeName&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;toLowerCase&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;input&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;radio&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt;

&lt;span class='nx'&gt;checkbox&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	&lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeName&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;toLowerCase&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;input&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;checkbox&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt;

&lt;span class='nx'&gt;file&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	&lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeName&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;toLowerCase&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;input&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;file&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt;

&lt;span class='nx'&gt;password&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	&lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeName&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;toLowerCase&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;input&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt;

&lt;span class='nx'&gt;image&lt;/span&gt;&lt;span class='o'&gt;:&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt; &lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
	&lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;nodeName&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;toLowerCase&lt;/span&gt;&lt;span class='p'&gt;()&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;input&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class='s2'&gt;&amp;quot;image&amp;quot;&lt;/span&gt; &lt;span class='o'&gt;===&lt;/span&gt; &lt;span class='nx'&gt;elem&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nx'&gt;type&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;},&lt;/span&gt;

&lt;span class='c1'&gt;//...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;These methods are formatted in such a way that the string tested against in the second portion of the expression (e.g. &lt;code&gt;&amp;quot;password&amp;quot;&lt;/code&gt;) is aligned consistently in all methods, meaning more readable code!&lt;/p&gt;

&lt;p&gt;The less beautiful alternative would be &lt;code&gt;... &amp;amp;&amp;amp; elem.type === &amp;quot;password&amp;quot;&lt;/code&gt; which would mean &amp;#8220;password&amp;#8221;, &amp;#8220;file&amp;#8221; and &amp;#8220;radio&amp;#8221; would be on different columns in the code.&lt;/p&gt;

&lt;p&gt;Tiny considerations like this matter!&lt;/p&gt;

&lt;p&gt;See &lt;a href='https://github.com/jquery/sizzle/blob/master/sizzle.js#L671'&gt;these filters on github&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Underscore's isNaN method</title>
   <link href="http://beautifuljs.net/2011/09/29/underscore-isnan"/>
   <updated>2011-09-29T00:00:00-07:00</updated>
   <id>http://uglyjs.net/2011/09/29/underscore-isnan</id>
   <content type="html">&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='javascript'&gt;&lt;span class='c1'&gt;// Is the given value `NaN`? `NaN` happens to be the only value in JavaScript&lt;/span&gt;
&lt;span class='c1'&gt;// that does not equal itself.&lt;/span&gt;
&lt;span class='nx'&gt;_&lt;/span&gt;&lt;span class='p'&gt;.&lt;/span&gt;&lt;span class='nb'&gt;isNaN&lt;/span&gt; &lt;span class='o'&gt;=&lt;/span&gt; &lt;span class='kd'&gt;function&lt;/span&gt;&lt;span class='p'&gt;(&lt;/span&gt;&lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;)&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
    &lt;span class='k'&gt;return&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt; &lt;span class='o'&gt;!==&lt;/span&gt; &lt;span class='nx'&gt;obj&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;See &lt;a href='https://github.com/documentcloud/underscore/blob/master/underscore.js#L691'&gt;&lt;code&gt;_.isNaN&lt;/code&gt; on github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s also worth mentioning &lt;a href='http://documentcloud.github.com/underscore/docs/underscore.html'&gt;Underscore&amp;#8217;s annotated source&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 
</feed>