2013-05-09 59 views
1

假設我有以下的CoffeeScript代碼:與文字符號擴充性能

person = 
    name: 'Alice' 

現在,我要以擴大此對象有兩個附加屬性。常見的寫法是:

person.age = 34 
person.bestFriend = 'Bob' 

但是,我不喜歡重複person。然而,我喜歡什麼,是寫:

person = 
    age: 34 
    bestFriend: 'Bob' 

(不幸的)這將創建一個全新的對象,並將其分配給個人的變量,這意味着愛麗絲已經失去了她的名字。除了逐行寫屬性賦值之外,還有更好的方法來增強CoffeeScript中的對象嗎?喜歡的東西:

person.augment 
    age: 34 
    bestFriend: 'Bob' 

回答

2

不是這樣的語言特性,但寫一個簡單的extend功能是很容易的(或使用現有版本on UnderscorejQuery):

extend = (dst, src) -> 
    dst[k] = src[k] for k of src 
    dst 

person = 
    name: 'Alice' 

extend person, 
    age: 34 
    bestFriend: 'Bob'