javascript の mixin パターンについて読んでいるときに、理解できない次のコードに遭遇しました。
SuperHero.prototype = Object.create( Person.prototype );
実際には、元のコード (大文字の H) にタイプミスがあります。ダウンケースすると機能します。ただし、実際に行を削除すると、すべてが同じように機能するようです。
完全なコードは次のとおりです。
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
何をしSuperHero.prototype = Object.create( Person.prototype );
ますか?