JavaScriptのプライベートメンバ

 JavaScriptにもプライベートメンバがあったことに(今更ながら)感動したのでちょっと記述。
 以下、テストコードだけれど、varをつけるとローカルスコープになるので外からはアクセスできないが、内部からクロージャを利用してアクセスすることができるので、プライベートメンバ、プライベートメソッドを実現できるというもの。
 まぁ、一般的な開発ではあんまり活躍の機会はないわけだけども。

function HogeClass()
{
	var privateMember = 10;						// private
	var privateMethod = function ( arg1 ) {				// private
	    alert( "privateMethod[" + arg1 + "]" + privateMember );	// クロージャ
	}
	
	this.publicMethod = function ( param ) {
	    if( privateMember > 0 ) {
	        privateMethod( param );
	        privateMember--;					// クロージャ
	    }
	}
}

function test()
{
	var hoge = new HogeClass();
	var hoge2 = new HogeClass();

	hoge.publicMethod( "A" );
	hoge.publicMethod( "B" );
	hoge2.publicMethod( "C" );
	hoge2.publicMethod( "D" );

	// hoge.privateMethod( "E" );	// もちろんこれはundefined
	// hoge.privateMember;	// これもundefind
}