結論:
Javascriptではプライベートにしたいデータを関数で囲み、その関数においてローカルになるようにすれば、関数の外から利用できなくなる。
(シンプルな例)
function Device() { // プライベート var name = 'tablet'; // パブリックメンバ this.getName = function() { return name; }; } var mydevice = new Device(); // nameはプライベートなのでundifined console.log(mydevice.name); // パブリックメソッドにはアクセス可能 console.log(mydevice.getName());
(まとめ)
- Javascriptにはプライベートメンバのための特別な構文がない。
- クロージャを使用するとこれを実装できる。
- コンストラクタ関数で作成したクロージャのスコープにある変数はコンストラクタ外部からは見れない。
- プライベート変数はコンストラクタ内部で定義したパブリックメソッドから利用できる。