>> JavaScript入門トップに戻る

クラスについて【その2】

今回はクラスについて、もっと深く解説していきます。

前回はコンストラクタ内で、変数や関数を定義していたと思いますが、
JavaScriptの関数は、オブジェクトを生成した後でも追加が可能です。
以下のコードを見てください。

//////////////////クラス定義///////////////////////
var OBJECT = function(n,a){
	this.name=n;
	this.age=a;
	this.display = function(){
		alert("名前は"+this.name+"で、年齢は"+this.age+"歳です。");
	}
}
//////////////////クラス定義ここまで///////////////////////

function classtest2(){
	
	var temp=new OBJECT("管理人",100);
	
	//ここで変数を追加
	temp.seibetsu="男";
	
	//さらに関数を追加
	temp.display2=function(){
		alert(temp.seibetsu);
	}
	
	//追加した関数を実行。
	temp.display2();
}



↑のボタンを押して見てください。
表示されましたよね?
それではコードの解説を行います。

クラスの定義は前回の章と一緒です。
classtest2の関数を見てください。
まずオブジェクトを生成してるところまでは一緒です。
その後、
temp.seibetsu="男";
として、このオブジェクトにseibetsuという変数を追加してます。
さらに、
temp.display2=function(){
alert(temp.seibetsu);
}
と書いて、display2という関数を追加しています。
そしてその関数の内部では、先程追加した変数をalert関数で表示させています。
最後に、今作ったばかりのdisplay2関数を実行しています。
という流れで、「男」という文字が表示されています。
このように、生成したオブジェクトに変数や関数を追加することも可能です。
ですが、「生成したオブジェクト」に追加しているだけです。
OBJECTクラス自身に追加しているわけではないので、注意して下さい。
つまり、この変数と関数はtempオブジェクトでのみ有効であり、
今後OBJECTクラスをnewで生成したとしても、
そのオブジェクトでは変数seibetsuとdisplay2関数は使えないということです。
理解できましたでしょうか?

今の方法は作成したインスタンスだけにしか効果がない方法でしたが、
別の方法でOBJECTクラス自身に変数や関数を追加する方法もあります。
次回の講座でその方法を説明します。



>> 【クラスについて【その3】】に進む
>> JavaScript入門トップに戻る