title: binding/applying constructors in JavaScript
body: <p>I was looking for solutions for calling Javascript constructors with an arbitrary number of arguments, and found some good SO posts, which led me to believe that these three calls should work the same.  However, at least in rhino and node.js, they do not:</p>
  
  <pre><code>1. f = Date.bind(Date, 2000,0,1)
  2. g = Date.bind.call(Date, 2000, 0, 1)
  3. h = Date.bind.apply(Date, [2000, 0, 1])
  </code></pre>
  
  <p>The first one has the desired result:</p>
  
  <pre><code>print(new f()) //=&gt; Sat Jan 01 2000 00:00:00 GMT-0500 (EST)
  </code></pre>
  
  <p>But the other two don't:</p>
  
  <pre><code>print(new g()) //=&gt; Thu Feb 01 1900 00:00:00 GMT-0500 (EST)
  print(new h()) //=&gt; Wed Jun 01 1904 00:00:00 GMT-0400 (EST)
  </code></pre>
  
  <p>So something's gone haywire somewhere.  Thoughts on what?  Is it just a bad idea to mix things like <code>apply</code>, <code>bind</code>, and/or <code>call</code> with <code>new</code>?</p>