我有一组刚从 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'}
];
在应用程序的业务逻辑和(车把)模板的某些点上,我需要每个用户的全名,但当然我不想重复name + ' ' + surname
所有地方的串联逻辑。
因此,我执行以下“增强”这些用户并添加我想要的功能:
for(var i=0,length=users.length; i<length; i++) {
users[i].getFullName = function() {
return this.name + ' ' + this.surname;
}
}
这种技术效果很好,但我的问题是:
- 有更好的方法吗?请注意,我想要一个面向对象风格的解决方案,而不是像
getFullNameOfUser(user)
. - 我可以测量将函数添加到所有这些对象的时间损失,但我可以测量将函数添加到对象的内存损失吗?JavaScript 对象大小等解决方案不计入函数。