self = this とする時。

これは知ってないとわからないなぁ。なのでメモ。

イベントやタイマー(setIntervalとかsetTimeoutとか)などで呼び出されると、thisは自分のオブジェクトを指すわけではない。
自分のオブジェクトを使いたいときは事前にthisをローカル変数に保存して利用する。

だそうな。
すなわち、

var self = this;

として、self を使う必要が有る。
http://blog.joyfullife.jp/archives/2007/09/11185000.phpより。