title: Reasoning about and finding the top most "parent" prototype object of a class instance?
body: <p>Good day.</p>
  <p>I'm taking a JS course and right now we're covering Prototypes. My question has to do with the prototype object.</p>
  <p>Here's the code sample:</p>
  <pre><code>class Pet {
      constructor(name, age) {
          this.name = name;
          this.age = age;
      }
      eat() {
          return `${this.name} is eating!`
      }
  }
  
  class Dog extends Pet {
      bark() {
          return &quot;Woof!&quot;
      }
      eat() {
          return `${this.name} scarfs his food!` 
      }
  }
  
  const wyatt = new Dog(&quot;Wyatt&quot;, 13);
  </code></pre>
  <p>If I type in the console:
  <code>wyatt.eat()</code></p>
  <p>(1) The console will look for the eat method on the Dog prototype. If it finds it, it'll run the method.</p>
  <p>(2) If it doesn't find it there it will look at the Pet prototype for it, courtesy of the extends keyword.</p>
  <p>(3) Now if it doesn't find it there, the console will look for it on the &quot;Object Prototype&quot; (the way the tutor formulated it).</p>
  <p>I get all of the above and that a class instance has a prototype template it refers to, and possibly others. The confusing part for me is specifically at step (3), what is the prototype here? Is it looking on the global object? Would that be the window object? This part is still a bit shaky for me.</p>
  <p>Many thanks.</p>