プロトタイプベースの継承とコンストラクタ

JavaScriptのコンストラクタとか継承とかわからないなりにまとめ。

人間のトムとミュータントのケンをJavaScriptで表現してみるよ。

//人間
var Human = function(name, age){
	this.name = name;
	this.age = age;
	this.type = 'Human';
};

//人間は、聞いたら自分のことを紹介してくれるよ
Human.prototype.showStatus = function(){
	var str = '';
	for(var i in this)if(this.hasOwnProperty(i)){
		 str += i + ' = ' +this[i] + '\n';
	}
	alert(str);
};
//トムはtomって名前の17歳の人間だよ
var tom = new Human('tom', 17);

//ミュータント
function Mutant(name, age, skill){
	Human.call(this, name, age);//人間としての名前と年齢
	this.type = 'Mutant';
	this.skill = skill;//ミュータントのスキル
};

//ミュータントも人間だからHumanクラスを継承するよ
Mutant.prototype = new Human;

//ケンはkenって名前で19歳ですごい必殺技を持ってるよ
var ken = new Mutant('ken', 19, 'エターナルフォースブリザード');

//トムもケンも人間だから
//聞いたら自己紹介してくれるはずだよ
tom.showStatus();
/*
name = tom
age = 17
type = Human
*/
ken.showStatus();
/*
name = ken
age = 19
type = Mutant
ability = エターナルフォースブリザード
*/

相手は死ぬよ!