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
}