 <p>First, you should really do</p> <pre><code>Car.prototype = Object.create(Vehicle.prototype); </code></pre> <p>The reasons are involved, but suffice to say that that's a better way to get a new object for your <code>Car</code> prototype and ensure that it inherits from the <code>Vehicle</code> prototype.</p> <p>Now, the <strong>reason</strong> you want a new object for the <code>Car</code> prototype is that if you're bothering to make a <em>subclass</em> you'll probably want specialized behaviors that <em>do</em> apply to the subclass but <em>don't</em> apply to the more general parent class. You need a new object for those new properties; otherwise, you'd be adding those behavior properties to the <code>Vehicle</code> prototype, and all Vehicles would have access.</p> <p>Finally, setting <code>Car.prototype</code> to just <code>Vehicle</code> doesn't make much sense. That would <em>work</em>, in that it would not cause an exception, but it would set the <code>Car</code> prototype to be the <code>Vehicle</code> constructor function itself.</p>