LoginSignup
8

More than 5 years have passed since last update.

posted at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8