title: Simple “Class” Instantiation
body: <p><a href="http://ejohn.org/blog/simple-class-instantiation/">From John Resig blog</a>:</p>
  
  <pre><code>// makeClass - By John Resig (MIT Licensed)
  function makeClass(){
    return function(args){
      if ( this instanceof arguments.callee ) {
        if ( typeof this.init == "function" )
          this.init.apply( this, args.callee ? args : arguments );
      } else
        return new arguments.callee( arguments );
    };
  }
  </code></pre>
  
  <p>especially this line   <code>this.init.apply( this, args.callee ? args : arguments );</code></p>
  
  <p>What's the difference between <code>args</code> and <code>arguments</code>? Can <code>args.callee</code> ever be <code>false</code>?</p>