CoffeescriptでsetIntervalを実行した際にthisを認識できずにコケる
CoffeescriptでsetIntervalを実行した際にthisを認識できずにコケるバグが発生。
ソースの概要はこちら
class Main
render: ->
@ctx.drawImage(@video, 0, 0)
videoStart: ->
@timer = setInterval(@render,100)
Chromeのデバッカで確認してみたところ、windowプロパティしか認識していない。うまくthisを拾えていないよう。原因はsetIntervalがグローバルな場所で実行されていることだと判明。
ぐぐってみるとstackoverflowで解決方法を発見
要は、thisをバインディングしてしまえばオッケー!
ってことで、render:->
を render: =>
に変更してバインディング。
class Main
render: =>
@ctx.drawImage(@video, 0, 0)
videoStart: ->
@timer = setInterval(@render,100)
無事setIntervalを動かすことが出来ました。