title: why do we use `Boy.prototype = new Human;` to simulate inheritance?
body: <p>i don't get why everyone is using <code>Boy.prototype = new Human;</code> to simulate inheritance. Look, what we want is the function's of A right? we can do that without instantiating a new A (in fact instantiating a new A does give us undesirable results, in the sense that we are actually running the instantiating function which isn't what we want)</p>
  
  <p>So isn't this a better solution?</p>
  
  <pre><code>for (var prop_name in Human.prototype) {
  Object.defineProperty(
            Boy.prototype,
            prop_name,
            Object.getOwnPropertyDescriptor(Human.prototype,prop_name)
          );
  }
  </code></pre>
  
  <p>Say we are that particular and want not only the enumerable properties in Human.prototype we could still achieve it by using <code>Object.getOwnPropertyNames</code> and calling it on the prototype chain, which in turn is available to us through <code>Object.getPrototypeOf</code>.</p>
  
  <p>So what exactly is the benefit of doing <code>Boy.prototype = new Human;</code> to simulate inheritance when we have better options available to us?</p>