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()
我找到的唯一方法是
- 克隆我的嵌套方法对象
- 将每个嵌套方法绑定到我当前的对象
我宁愿将它保留在我的原型对象中,以避免在创建新对象时重新创建所有嵌套方法。
我找到了一个答案 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()
作为 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()
我找到的唯一方法是
- 克隆我的嵌套方法对象
- 将每个嵌套方法绑定到我当前的对象
我宁愿将它保留在我的原型对象中,以避免在创建新对象时重新创建所有嵌套方法。 我找到了一个答案 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()