次のようにイベント ハンドラーをバインドするサンプル コードがあります。
var h1=document.querySelector('h1');
h1.onclick=doit;
function doit(x) {
console.log(x);
}
イベント ハンドラーが (h1
要素をクリックして) トリガーされると、期待どおり、出力はevent
オブジェクトになります。
次のようにイベントハンドラーをバインドすると:
h1.onclick=doit.bind(h1);
同じ結果が得られます。
ただし、次のようにバインドすると:
h1.onclick=doit.bind(h1,1);
1
の後の最初のパラメーターを取得しますh1
。いずれの場合も、 の値this
は に正しく設定されてh1
いますが、最後のケースでは、渡されたパラメーターが予想されるイベント オブジェクトを置き換えているように見えます。
イベント ハンドラを関数式として書き換えずにイベント オブジェクトを保持するにはどうすればよいですか?