What does Object.create( Class.prototype ) do in this code?
<p>I'm reading about the <a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mixinpatternjavascript" rel="nofollow">mixin pattern in javascript</a> and I encountered this piece of code that I don't understand:</p>

<pre><code>SuperHero.prototype = Object.create( Person.prototype );
</code></pre>

<p>There is actually a typo in the original code (the uppercase H). If I downcase it it works. However, if I actually delete the line everything seems to work the same.</p>

<p>Here is the full code:</p>

<pre><code>var Person =  function( firstName , lastName ){
  this.firstName = firstName;
  this.lastName =  lastName;
  this.gender = "male";
};

// a new instance of Person can then easily be created as follows:
var clark = new Person( "Clark" , "Kent" );

// Define a subclass constructor for for "Superhero":
var Superhero = function( firstName, lastName , powers ){

    // Invoke the superclass constructor on the new object
    // then use .call() to invoke the constructor as a method of
    // the object to be initialized.

    Person.call( this, firstName, lastName );

    // Finally, store their powers, a new array of traits not found in a normal "Person"
    this.powers = powers;
};

SuperHero.prototype = Object.create( Person.prototype );
var superman = new Superhero( "Clark" ,"Kent" , ["flight","heat-vision"] );
console.log( superman ); 

// Outputs Person attributes as well as powers
</code></pre>

<p>What does <code>SuperHero.prototype = Object.create( Person.prototype );</code> do?</p>
