1
 class SocialStudies
      constructor : (@val1,@val2) ->
          console.log 'constructed '+@val1+' | '+@val2
      doAlerts :
          firstAlert : =>
               alert @val1
          secondAlert : =>
               alert @val2

 secondPeriod = new SocialStudies 'git to class!', 'no recess for you!'

 secondPeriod.doAlerts.firstAlert() // error this.val1 is not defined

うまくいけば、あなたはアイデアを得る。@val1メソッド内に設定されたメソッドからアクセスしたいのですが、太い矢印は何もしません! ここで何をすべきか知っている人はいますか?

4

2 に答える 2

3
 class SocialStudies
      constructor : (@val1,@val2) ->
          console.log 'constructed '+@val1+' | '+@val2
          @doAlerts =
            firstAlert : =>
                alert @val1
            secondAlert : =>
                alert @val2
于 2012-05-23T04:41:07.337 に答える
0

もちろん、次のようにすることもできます。

class SocialStudies
  constructor: (@val1, @val2) ->
    @doAlerts = firstAlert: @firstAlert, secondAlert: @secondAlert
  firstAlert: =>
    alert @val1
  secondAlert: =>
    alert @val2

これはそれ以外の場合はキース・ニコラスの答えと同等ですが、継承されたクラスのメソッドでスーパーキーワードを使用できるため、次のように行うことができます。

class AntiSocialStudies extends SocialStudies
  secondAlert: =>
    @val2 += ' no solitary drinking until 3PM.'
    super

secondPeriod = new AntiSocialStudies 'git to class!', 'no recess for you!'
secondPeriod.doAlerts.secondAlert()
于 2012-05-24T12:13:56.557 に答える