2011-10-17 61 views
1

考慮以下代碼:如何爲已定義的JavaScript對象定義getter屬性?

// Creating an empty object, without inheriting (binding) to any prototype 
var human = Object.create(null); 
human.firstName = 'Saeed'; 
human.lastName = 'Neamati'; 

現在,我想一個fullName屬性添加到該對象,它返回對象的firstName + ' ' + lastName

使用對象的文字符號,我可以簡單地寫一個getter函數是這樣的:

var human = { 
    firstName: 'Saeed', 
    lastName: 'Neamati', 
    get fullName() { 
     return this.firstName + ' ' + this.lastName; 
    } 
} 

但我無法弄清楚如何一個getter屬性附加到一個對象,它已經內置在別處。

回答

2

您可以使用Object.defineProperty

Object.defineProperty(<object>, <property-name>, <descriptor>); 

哪裏<descriptor>可以是這樣的:

// from the example: 
{ value: 0x9f91102, 
    get: function() { return 0xdeadbeef; } } 
1

試試這個:

Human = function(){ 
    human.firstName = 'Saeed'; 
    human.lastName = 'Neamati'; 
}; 

human.prototype.getFullName = function(){ 
    return this.firstName + ' ' + this.lastName; 
} 

var humanOne = new Human(); 
alert(humanOne.getFullName()); 

希望它能幫助:)

+1

感謝@Juljan 。但是你寫的不是** getter屬性**。這是**方法**。 –