title: What values can a constructor return to avoid returning this?
body: <p>What are the exact circumstances for which a <code>return</code> statement in Javascript can return a value other than <code>this</code> when a constructor is invoked using the <code>new</code> keyword?</p>
  
  <p>Example:</p>
  
  <pre><code>function Foo () {
    return something;
  }
  
  var foo = new Foo ();
  </code></pre>
  
  <p>If I'm not mistaken, if <code>something</code> is a non-function primitive, <code>this</code> will be returned. Otherwise <code>something</code> is returned. Is this correct?</p>
  
  <p>In other words, what values can <code>something</code> take to cause <code>(new Foo () instanceof Foo) === false</code>?</p>