JavaScript 独自コンストラクタ

こんにちは、タクゾウです。
今回は、jsでクラスっぽいものを作るための方法であるコンストラクタについて、まとめようと思います。

jsでは、PHP言語や他の言語のように「クラス(設計図)」を作る機能はありません。
代わりに「クラスっぽいもの」として、「コンストラクタ」というものを独自に作る事で、「クラス(設計図)」から「インスタンス」を量産することができます。

コンストラクタとは

クラス設計図みたいなもので、new演算子を使って、元になる関数から同じ種類のオブジェクトを簡単に作成するための方法。
JavaScriptではコンストラクタ関数を定義して、オブジェクトを生成でき、コンストラクタを呼び出して作成したオブジェクトをインスタンスと呼ぶ

自得コンストラクタの作り方

jsではコンストラクタはただの関数であり、関数内で呼び出すthisは呼び出し元のオブジェクトを参照する。

JavaScript

	var Monster = function(name, hp, attack){
		this.name = name;
		this.hp = hp;
		this.attack = attack;
		this.doAttack = function(){
			console.log(this.name + 'は' + this.attack + 'のダメージを受けた。');
		}
	}

	//newすれば、インスタンスがthisの参照先になる。
	var slime = new Monster("スライム", 100, 1);
	var dragon = new Monster("ドラゴン", 9999, 8000);

	console.log(slime.doAttack());//結果 スライムは1のダメージを受けた。
	console.log(dragon.doAttack());//結果 ドラゴンは8000のダメージを受けた。
	

下記の書き方でもインスタンスを作る事は可能だか、

上の下記かたと同じだけど、コンストラクタから作られているか、直接作っているかの違いだけ、

JavaScript


//スライムの連想配列
var slime = {
	name : 'スライム',
	hp : 100,
	attack : 1,
	doAttack : function(){
		console.log(this.name + 'は' + this.attack + 'のダメージを受けた。');
	}
}

console.log(slime);//結果 スライムは1のダメージを受けた。
console.log(slime.doAttack());//結果 スライムは1のダメージを受けた。

//ドラゴンの連想配列
var dragon = {
	name : 'ドラゴン',
	hp : 9999,
	attack : 8000,
	doAttack : function(){
		console.log(name + 'は' + attack + 'のダメージを受けた。');
	}
}

console.log(dragon.doAttack());//結果 ドラゴンは8000のダメージを受けた。

MEMO
数が増えると一個一個つくるのが大変なので、コンストラクタ(設計図)をつくり、引数によりインスタンスをつくるようにしましょう。
このような考えかたをオブジェクト指向と言います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Translate »