B-Teck!

お仕事からゲームまで幅広く

【JavaScript】JavaScriptのクラスにメンバ変数を用意する

JavaScriptのクラスをまだよく把握できてないんだけど、クラス変数をprivateにしたりpublicにしたかったりしたので試してみた。

ネタ元

とりあえずコード

var test = function(){
  var i = "privateのi";
  this.j = "publicのj";
  this.getI = function (){
          return i;
  }
}

var test2 = new test();

//変数にアクセス出来ない
console.log(test2.i);
//公開されてる変数にはアクセスできる
console.log(test2.j);
//getterを介して変数にアクセスする
console.log(test2.getI());

//処理結果
//undefined
//publicのj
//privateのi

thisとvarの違い

  • thisの場合

    this は、オブジェクトに紐づく関数や変数の塊。 呼び出し元によって、thisの表す値は変わる。
    今回は下記のコンストラクタ呼び出しパターンを参照

    this を使って宣言されたものは、インスタンスのメンバ変数(public)のように扱える。

  • varの場合

    var で宣言された変数は同じスコープ内でしか参照できない。
    今回のクラス定義では、コンストラクタの関数外からは参照できない変数となる。
    そのため、インスタンスのメンバ変数(private)みたいなものとして扱える。