coffeescript 中的嵌套方法

Nested methods in coffescript

作为 following example ,我想将嵌套方法放入 coffescript class(或本机 js)中。

class Child
  constructor: (@id) ->
    console.log "new child #{@id}"
  animations:
    start: ->
      console.log @, "#{@id} start animation"
    custom:
      rotate: ->
        console.log @, "#{@id} custom rotate animation"

class Parent
  constructor: ->
    @_childs = []
    _.each [1..10], (index) =>
      @_childs.push new Child(index)
  startAll: ->
    _.each @_childs, (child) ->
      child.animations.start()


parent = new Parent()
parent.startAll()

我找到的唯一方法是

  1. 克隆我的嵌套方法对象
  2. 将每个嵌套方法绑定到我当前的对象

我宁愿将它保留在我的原型对象中,以避免在创建新对象时重新创建所有嵌套方法。 我找到了一个答案 here,但我没有找到处理它的好方法。 我也找到了 answer,这是唯一的方法吗?

谢谢你的帮助

如果你创建函数而不是对象,你可以跟踪 this:

class Child
  constructor: (@id) ->
    console.log "new child #{@id}"
  animations: ->
    start: =>
      console.log @, "#{@id} start animation"
    custom: ->
      rotate: =>
        console.log @, "#{@id} custom rotate animation"

然后调用函数,return一个对象。

child.animations().start()