1

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ます。何故ですか?そして、別のプロパティを返すようにする方法はありますか?

4

1 に答える 1