Object.defineProperty メソッドを使用していくつかのゲッターとセッターを定義する JavaScript オブジェクトをいじっています。
function User() {
var _username;
var _id;
Object.defineProperty(User, 'id', {
get: function() {
return _username;
}
});
Object.defineProperty(User, 'username', {
get: function() {
return _username;
},
set: function(username) {
this._username = username;
}
});
}
プロパティ (id) の 1 つについては、getter のみが必要です。もともとタイプミスがあり、 の値を返していまし_username
たが、上記が機能しないことにすぐに気付きました。好奇心のために、なぜ期待どおりに機能しなかったのかを理解しようとしています。私が次のことをした場合:
var u = new User();
u.username = 'bob';
alert(u.username);
alert(u.id);
undefined
の代わりに最後のステートメントが警告しbob
ます。何故ですか?そして、別のプロパティを返すようにする方法はありますか?