title: Object extending Array with Functional Inheritance
body: <p>Using <a href="http://julien.richard-foy.fr/blog/2011/10/30/functional-inheritance-vs-prototypal-inheritance/" rel="nofollow">functional inheritance</a> we can extend objects by passing them as the context of a function call assigning to <code>this</code>.</p>
  
  <p>This doesn't seem to work as I'd expect for the <code>Array</code> constructor.</p>
  
  <pre><code>var ctx = {
      foo: "foo"
  };
  
  Array.call(ctx);
  </code></pre>
  
  <p><code>ctx</code> -> <code>Object(foo: "foo")</code></p>
  
  <p>Conversely this does work with other constructor looking functions.</p>
  
  <pre><code>var fakeArrayConstructor = function () {
      this.length = 5;
  }
  
  fakeArrayConstructor.call(ctx);
  </code></pre>
  
  <p><code>ctx</code> -> <code>Object {foo: "foo", length: 5}</code></p>
  
  <p>Does the <code>Array</code> constructor not assign some of its properties using <code>this</code> or is there something else going on? I know that a lot of the functionality associated with arrays is stored on <code>Array.prototype</code> however that's not my focus for this exercise.</p>