fullName
他のすべてのプロパティのマッシュアップを返す1 つのパブリック アクセサー () を提供しながら、プライベート変数を使用する Javascript でビルダー パターンを作成しようとしています。この質問と回答は、プライベート変数にアクセスするために person コンストラクター内で使用できることを示唆していObject.defineProperty
ますが、機能しません - instance.fullName
is always undefined
.
ビルダー パターン変数が非公開のままであるが、パブリック アクセサーがビルド チェーン全体でそれらにアクセスできるようにするにはどうすればよいでしょうか?
var Person = function () {
var _firstName, _lastName
Object.defineProperty(this, "fullName", {
get: function () {
return _firstName + ' ' + _lastName;
}
});
return {
firstName: function (n) {
_firstName = n
return this
},
lastName: function (n) {
_lastName = n
return this
}
}
}
var x = new Person().firstName('bob').lastName('dole');
console.log(x.fullName); // always undefined