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

发布于 2024-12-10 07:11:57 字数 561 浏览 0 评论 0原文

考虑以下代码:

// 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 属性附加到已经在其他地方构建的对象。

Consider this code:

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

Now, I want to add a fullName property to this object, which returns the firstName + ' ' + lastName of the object.

Using object literal notation, I can simply write a getter function this way:

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

But I can't figure out how to attach a getter property to an object, which is already built somewhere else.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脸赞 2024-12-17 07:11:57

您可以使用 Object.defineProperty

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

其中 ; 可以是这样的:

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

You can use Object.defineProperty

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

Where <descriptor> can be something like:

// from the example:
{ value: 0x9f91102,   
  get: function() { return 0xdeadbeef; } }
乄_柒ぐ汐 2024-12-17 07:11:57

试试这个:

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

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

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

希望有帮助:)

try this :

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

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

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

Hope it helps :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文