example.coffee
class Hoge
constructor: (message) ->
@message = message
$("form").on "submit" (event) ->
_fuga.call(@)
_fuga = ->
alert @message
上記のコードは正しく動かない。
プライベートメソッド _fuga 中で @message を参照しようとしているが、undefined となる。
理由は、イベントハンドラではthisがイベント発生元のオブジェクトを指すようになっているのが原因。
それを回避するには、あらかじめ _this など別の変数に this を退避しておきイベントハンドラ内では _this を参照するように変更すれば良い。
CoffeeScriptではそのようなケースのショートカットとして => が用意されている。
前述のコードを書き直すと以下のとおりとなる。
example2.coffee
class Hoge
constructor: (message) ->
@message = message
$("form").on "submit" (event) =>
_fuga.call(@)
_fuga = ->
alert @message