如何为已定义的JavaScript对象定义getter属性?

时间:2011-10-17 07:14:04

标签: javascript getter javascript-objects

考虑以下代码:

// 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 个答案:

答案 0 :(得分:2)

您可以使用Object.defineProperty

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

<descriptor>可以是:

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

答案 1 :(得分: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());

希望有所帮助:)