gpt4 book ai didi

javascript - 向从 JSON 响应构造的对象添加函数

转载 作者:行者123 更新时间:2023-11-30 10:34:02 24 4
gpt4 key购买 nike

我有一组用户,这些用户是我刚从 JSON 服务器响应中获得的。假设如下:

var users = [
{id: 1, name: 'john', surname: 'smith'},
{id: 2, name: 'john', surname: 'smith'},
{id: 3, name: 'john', surname: 'smith'},
{id: 4, name: 'john', surname: 'smith'},
{id: 5, name: 'john', surname: 'smith'},
{id: 6, name: 'john', surname: 'smith'},
{id: 7, name: 'john', surname: 'smith'}
];

在应用程序的业务逻辑和( Handlebars )模板中的某些点,我需要每个用户的全名,但当然我不想重复 name + ' ' 的串联逻辑+ 到处都是姓氏

因此我做了以下“增强”这些用户并添加了我想要的功能:

for(var i=0,length=users.length; i<length; i++) {
users[i].getFullName = function() {
return this.name + ' ' + this.surname;
}
}

这项技术工作正常,但我的问题是:

  • 有更好的方法吗?请注意,我想要一个面向对象风格的解决方案,而不是像 getFullNameOfUser(user) 这样的解决方案。
  • 我可以衡量将函数添加到所有这些对象的时间损失,但我可以衡量将函数添加到对象的内存损失吗? JavaScript object size 等解决方案不计算功能。

最佳答案

您可以创建一个类 Users,并将 getFullNameOfUser 添加到原型(prototype)中。

var User = function(obj){
this.id = obj.id;
this.name = obj.name;
this.surname = obj.surname;
};

User.prototype.getFullNameOfUser = function(){
return this.name + ' ' + this.surname;
};

for(var i=0,length=users.length; i<length; i++) {
users[i] = new User(users[i]);
}

关于您在评论中的问题,您可以:

var User = function(obj){
for(var key in obj){
this[key] = obj[key];
}
};

但是这样你可能会在对象中得到不需要的属性

关于javascript - 向从 JSON 响应构造的对象添加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com