簡體   English   中英

Object.defineProperty和返回值

[英]Object.defineProperty and return values

我正在玩一個JavaScript對象,該對象使用Object.defineProperty方法定義了一些getter和setter方法。

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),我只想要一個吸氣劑。 最初,我有一個錯字,並且它返回_username的值,但我很快意識到上述方法不起作用。 只是出於好奇的緣故,我試圖理解為什么它沒有按預期工作。 如果我執行以下操作:

var u = new User();
u.username = 'bob';
alert(u.username);
alert(u.id);

最后一條語句將警告undefined而不是bob 這是為什么? 有沒有辦法讓它返回另一個屬性?

您必須在this定義屬性,而不是構造函數

function User(params) {       
   var _username;

   Object.defineProperty(this, 'id', {
        get: function() {
            return _username;
        }       
   });         

   Object.defineProperty(this, 'username', {
        get: function() {
            return _username;
        },
        set: function(username) {
            _username = username;          
        }
   }); 
   if (params && params.username) {
       this.username = params.username;
   }
}
User.prototype.stringify = function () {
    return JSON.stringify({ username: this.username});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM