使用文字符号扩充属性

时间:2013-05-09 19:37:16

标签: javascript coffeescript

假设我有以下CoffeeScript代码:

person =
  name: 'Alice'

现在,我想用另外两个属性来扩充这个对象。常见的方法是写:

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

但是,我不想重复person。不过我喜欢写的是:

person =
  age: 34
  bestFriend: 'Bob'

(不幸的是)这会创建一个全新的对象并将其分配给person变量,这意味着Alice失去了她的名字。除了逐行编写属性赋值之外,还有更好的方法来增加CoffeeScript中的对象吗?类似的东西:

person.augment
  age: 34
  bestFriend: 'Bob'  

1 个答案:

答案 0 :(得分: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'