JavaScriptでもクラスを実現することができる。

Publicメソッドだけでなく、コンストラクタやPrivateメソッドも実現可能である。
コールバック関数やPrivateメソッドからメンバにアクセスする場合、thisではなくmyselfを介すること。

継承も実現可能である。

実装ソースコード

	<script src="jquery.js"></script>
	<script src="Animal.js"></script>
	~省略~
	<script>
	var animal;//動物クラス
	
	$( function() {
		// 初期値を渡しながら、Animalクラスを作成する。
		var param ={
			'res_slt':'#res',
			'animal_name':'ヤンバルクイナ'};
			
		animal = new Animal(param);
	});

	function test1(){
		// タイトルを表示する
		animal.showTitle();
		
		// 数秒後に動物名を表示する
		animal.showAnimalName('国頭村');
	}
	</script>
	~省略~
	<input type="button" value="テスト実行" onclick="test1()" />
	<div id="res"></div>
	

Animalクラスのソースコード

	var Animal =function(p_params){
		
		// 出力要素
		this.res_slt = p_params.res_slt;
		
		// 動物名
		this.animal_name = p_params.animal_name;
	
		// 自分自身のインスタンス。  プライベートメソッドやコールバック関数で利用するときに使う。
		var myself=this;
	
		/**
		 * コンストラクタ
		 */
		this.constract=function(){
			var str = "コンストラクタが呼び出されました。<br>";
			$(this.res_slt).append(str);
		};
		
		/**
		 * 当クラスのインスタンスを取得する
		 */
		this.getInstance = function(){
			return this;
		};
		
		/**
		 * タイトルを表示する
		 */
		this.showTitle = function(){
			var str = '動物のタイトル<br>';
			$(this.res_slt).append(str);
		};
	
		/**
		 * 動物名を表示させる。
		 * 
		 * コールバック系の関数であるsetTimeoutを使い、2秒後に動物名を表示させる。
		 * @param string place 場所
		 */
		this.showAnimalName=function(place){
		    setTimeout(function(){
		    	var str = place + 'の' + myself.animal_name + 'について。【2秒後に表示】<br>';
		    	$(myself.res_slt).append(str);
	
				privateName();//プライベートメソッドを呼び出せる
		    	
		    },2000);
		};
		
		
		/**
		 * プライベートなメソッド
		 * メンバにアクセスするときはthisではなくmyselfを使ってアクセスすること。
		 */
		function privateName(){
			var str = 'プライベートな' + myself.animal_name;;
			$(myself.res_slt).append(str);
		};
		
		//コンストラクタ呼出し(クラス末尾にて定義すること)
		this.constract();
	};
	

出力