javascriptには、javaで云うアクセス修飾子が言語上存在しない為、
オブジェクト内の要素はパブリックとなる。
クロージャを使うことにより、外部から参照が不可能な変数・メソッドを定義することが可能です。
以下にサンプルソースを記載しています。
// オブジェクトの定義
var obj = function() {
// プライベート変数の定義
var privateVar = 'プライベート';
// プライベート変数の定義
var privateFunc = function() {
alert(privateVar)
};
var F = function(){};
// パブリックファンクション定義
// 内部でprivateメソッドにアクセス
F.prototype.publicFunc = function() {
privateFunc();
};
return new F();
};
var testObj = obj();
// publicにアクセスしてみる。
testObj.publicFunc(); // プライベートが表示
// privateにアクセスしてみる
alert(obj.privateVar); // undefinedとなりアクセス不可!
alert(obj.privateFunc()); // TypeErrorとなりアクセス不可!
privateVarとprivateFuncについては、外部から直接アクセスは不可で
publicなpublicFunc経由でしかアクセスできない様になっています。