Coffeescript расширяет класс конструктора

 class RedGuy
       constructor : (@name) ->
           @nameElem = $ @name
           @nameElem.css color : red

 class WideRedGuy extends RedGuy
       constructor : ->
           @nameElem.css width : 900

 jeff = new WideRedGuy '#jeff'

Я хотел бы, чтобы #jeff был как красным, так и широким, но я всегда получаю this.name is undefined. Как я могу расширить конструктор (append?), Чтобы у меня был доступ к свойствам исходного объекта?

Ответ 1

Для этого нужно явно вызвать super. Вызов super в WideRedGuy вызовет конструктор RedGuy, после которого @nameElem будет правильно определен. Для более подробного объяснения вам следует проконсультироваться с документацией coffeescript по этому вопросу.

class RedGuy
      constructor : (@name) ->
          @nameElem = $ @name
          @nameElem.css color : red

class WideRedGuy extends RedGuy
      constructor : ->
          ## This line should fix it
          super # This is a lot like calling `RedGuy.apply this, arguments`
          @nameElem.css width : 900

jeff = new WideRedGuy '#jeff'