Javascriptでは、C++でいうコールバック関数みたいなのの関数ポインタみたいなのを利用する機会が多いです。
onMouseとかonClickとかonLoadとか、onReadyStateChangeとかとかとか。
こーゆーのをイベントハンドラっていいますね。
これらに、インスタンス関数をセットする場合、注意すべきことがあります。
Ajaxやりだすと、共通の処理をクラス化したくなります。
特にネットワーク接続関係をクラス化していきたかったんですが、onreadystatechangeへクラスメソッド(メンバ関数)を渡したときに問題が発生しました。
渡された関数から、this参照できないんです。
これではクラスの意味がまったくありません・・・。
でもそれをクロージャを使って回避する方法が以下に書かれてます。
イベントハンドラ周りのコードを2行程度追加するだけでできるので、とても簡単です。
コメントする