我有一组刚刚从JSON服务器响应中获得的用户。假设以下:我需要有每个用户的全名,但当然我不想重复拼接逻辑应用的将函数添加到从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 object size)不计算功能。
'users [i] .fullname = users [i] .name +''+ users [i] .surname' is not a option? :) – 2013-02-26 14:41:01
@Jack:不,因为这会缓存值。我想要一个对象的实时函数/方法,它可以对对象的状态做任何事情。 – cherouvim 2013-02-26 14:43:10
好吧,我是半开玩笑,但那是我没有考虑过的一点:) – 2013-02-26 14:45:44