JavaScript: クラスでプライベートメンバーを定義する
プライベートメンバーとは、クラスの外部からアクセスできないプロパティやメソッドのことです。 クラス内部でしか使用しないメンバを、外部から操作できないようにすることで、プログラムの安全性を高めます。
JavaScriptではクラスを定義する際に、通常はthisを使用します。 このthisを使う方法ではすべてパブリックメンバとなり、外部から操作できてしまします。
そこで、通常(thisを使う方法)とは違う方法で記述することでプライベートメンバを実現します。
次のようなクラスを定義してみます。
クラス名 : Card
プロパティ: _number プライベートメンバ
メソッド : getNumber() パブリックメンバ
サンプルコード
function Card(num){
var _number = num;
this.getNumber = function(){
return _number;
};
}
var c = new Card(3);
console.log(c.getNumber()); // 3
console.log(c._number); // undefined
最後の行でc._numberがundefinedになっていることを確認してください。外部からアクセスできなくなっています。
このようにvar をつかってローカル変数として定義することでプライベートメンバーになります。
このプライベートメンバーにアクセスするためのメソッド(ここではgetNumber())を特権メソッドと言います。
「_number」の先頭に「_(アンダーバー)」を付けているのは、プライベートメンバーであることをわかりやくするためです。 付けなくてもいいのですが、付けた方が自分にも他人にもわかりやすくなります。