Functionクラスに対する拡張(2)

bindAsEventListenerメソッド

【抜粋】
Function.prototype.bindAsEventListener = function(object) {
  var __method = this;
  return function(event) {
    return __method.call(object, event || window.event);
  }
}

構造は前述bindメソッドと似ています。

call()は引数固定の場合に使用します*1。 継承オブジェクト(object)以外の引数はイベントオブジェクトのみです。イベントハンドラへの関数バインドに特化したメソッドとなります。Netscape等では無名関数の引数から、IEではwindow.eventににより、イベントオブジェクトを取得してcall()に渡しています*2。これにより、バインドする関数では、ブラウザの差を気にすることなく引数のイベントオブジェクトを使用できます。

2006/10/20 追記。以下も参考にしてください。

イベントへの関数登録について - Backstage of theater.js

*1:apply()は可変個引数の場合に使用

*2:「c = a || b」でaがnullまたはunedfinedであればc==b、そうでなければc==aとなります。