Why does Array().slice without "new" work?
<p><a href="http://ejohn.org/apps/learn/#45" rel="nofollow">From here</a>:</p>

<pre><code>function highest(){ 
  return makeArray(arguments).sort(function(a,b){ 
    return b - a; 
  }); 
} 

function makeArray(array){ 
  return Array().slice.call( array ); 
} 

assert(highest(1, 1, 2, 3)[0] == 3, "Get the highest value."); 
assert(highest(3, 1, 2, 3, 4, 5)[1] == 4, "Verify the results.");
</code></pre>

<p>Now, why does <code>Array()</code> even return something meaningful, without a <code>new</code> operator? Most "class" definitions I've seen in JS return <code>undefined</code> if called without <code>new</code>:</p>

<pre><code>function User(name) {
  this.name = name;
  this.jump = function() {
    console.log(name + " is jumping!");
  }
}

assert(typeof(User("no New")) == 'undefined');
</code></pre>
