11
 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ます。元のオブジェクトのプロパティにアクセスできるように、コンストラクターを拡張(追加)するにはどうすればよいですか?

4

1 に答える 1

17

これを機能させるには、明示的に呼び出す必要がありますsuper。を呼び出すsuperと、のコンストラクタが呼び出され、その後、WideRedGuy適切に定義されます。より詳細な説明については、この問題に関するcoffeescriptのドキュメントを参照してください。RedGuy@nameElem

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'
于 2012-05-24T21:58:04.540 に答える