我有一組剛剛從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