Как following example, я хотел бы иметь вложенные методы в класс coffescript (или собственный js).Вложенные методы в coffescript
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()
Единственный способ я нашел, чтобы
- Clone мои вложенные методы объекта
- BIND каждый вложенными методы к моему текущему объекту
Я предпочел бы держать его в мой объект-прототип, чтобы избежать воссоздания всех вложенных методов при создании нового объекта. Я нашел ответ here, но у меня не было хорошего способа справиться с этим. Я также нашел answer, это единственный способ сделать это?
Thx для вашей помощи
Лучше всего не использовать вложенные методы, это боль, чтобы отслеживать «это». Я просто назвал бы метод в имени функции, например 'animationStart'. – elclanrs
Я понимаю вашу точку зрения, и вы, вероятно, правы, но я нахожу это немного печальным: «В javascript, это боль, чтобы отслеживать это», поэтому давайте просто изменим имя метода »:( –