Posted at

javascriptでprivate変数とメソッドを定義する方法

More than 5 years have passed since last update.

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経由でしかアクセスできない様になっています。