2013-05-09 38 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'