メンバ変数のカプセル化
var User = function(name) { this.name = name; } User.prototype.getName = function() { return this.name; }
よくありがちなオブジェクト指向javascriptです。setterを作って無いのは、値の書き換えを禁止したいからなんですが、
var u = new User('taro'); u.name = 'hoge';
こうやって、すぐ書き換えられてしまいます。全然カプセル化ができて無い。
しかししかし、昨日勉強したクロージャを使えばカプセル化が可能です。
var User = function(name) { this.getName = function() { return name; } }