ルールはたったひとつだけ
- staticでないメンバー関数(コンストラクタ含む)のなかで
thisはそのメンバー関数を呼び出した時のレシーバとなる
関数内関数定義のなかだろうとイベントハンドラの中だろうと常にメンバー関数の this は一定です。static member functionのなかではthisは使えません。JS的にいうと、メソッドの先頭で var that = this; としてその後すべての this ではなく that を使うイメージ、といえばわかりやすいでしょうか。bind/apply/callといったものもないので this がそれ以外の何かになることはありません。
簡単でしょ?