title: How and why do the [[prototype]] slots of instances contain the Constructor.prototype at the point in time they were made (and don't get 'updated')?
body: <p>If you change <code>Constructor.prototype</code>, instances of <code>Constructor</code> you made before the change will 'store' the old <code>Constructor.prototype</code> in their <code>[[prototype]]</code> slot.</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>function F() {
  }
  
  o1 = new F();
  
  F.prototype = {color: "red"};
  
  o2 = new F();
  
  console.log(o1) //it's [[proto]] contains old Object.prototype.
  console.log(o2) //it's [[proto]] contains {color: "red"}.</code></pre>
  </div>
  </div>
  </p>
  <p>I was under the impression the <code>[[prototype]]</code> slot references <code>Object.prototype</code>. How does it capture the old <code>Object.prototype</code>?</p>