title: Why does `window.console.log(this)` not log the console object?
body: <p>I'm just getting into advanced contextual instantiation, using prototype chain etc.</p>
  
  <p>I'm curious how the <code>window.console</code> object is created such that the function <code>log</code> thinks it's context is the window instance, not the console. Is this something to do with <code>Object.create</code> the <code>new</code> keyword, or binding / self = this?</p>
  
  <p><code>window.console</code> has a constructor (Console) and I'm curious what the cleanest way to invoke the constructor, passing Window instance/context would be? Pass it in as a param?? If Console is a seperate constructor, I think Window would be the one constructing it with a new context, rather than saying </p>
  
  <pre><code>windowInstance.console.log = function (args) {
  
  }.bind(windowInstance, args);
  </code></pre>
  
  <p>Pretty much, I'm imagining a layout like this, but don't understand how <code>this</code> gets routed</p>
  
  <pre><code>var window = new Window();
  window.console.log(this); // logs window
  
  function Window () {
      // this === window when constructed above
      this.console = new Console();
  }
  
  function Console () {
      this.log = function () {} // where this === window.console but log thinks it's window
  }
  </code></pre>
  
  <p>Thanks</p>