动态地向咖啡脚本对象添加成员

时间:2013-05-18 17:41:37

标签: coffeescript

所以目前我有一个看起来像这样的对象

module.exports = class Book extends events.EventEmitter

    constructor: ->

        @books = 
            a: new small_book('aaa')
            b: new small_book('bbb')
            c: new small_book('ccc')
            d: new small_book('ddd')

    update: (pair, callback) ->
        @books[pair].update_book()
        @emit 'update'

但是,我想做的就是这个,

 pairs = 
     a: 'aaa'
     b: 'bbb'
     c: 'ccc'
     d: 'ddd'

 module.exports = class Book extends events.EventEmitter

     constructor: ->       
        for each pair in pairs 
            @books[pair] = new small_book(pairs[pair])

或者基本上只是浏览我的列表并在列表中添加完全相同的对。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

来自fine manual

  

理解也可用于迭代对象中的键和值。使用of来表示对对象属性的理解,而不是数组中的值。

yearsOld = max: 10, ida: 9, tim: 11

ages = for child, age of yearsOld
  "#{child} is #{age}"

因此,如果你想在一个对象上循环,那就这样做:

constructor: ->
    @books = { }       
    for k, v of pairs 
        @books[k] = new small_book(v)

演示:http://jsfiddle.net/ambiguous/GnVXa/