次のようにイベント ハンドラーをバインドするサンプル コードがあります。
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いますが、最後のケースでは、渡されたパラメーターが予想されるイベント オブジェクトを置き換えているように見えます。
イベント ハンドラを関数式として書き換えずにイベント オブジェクトを保持するにはどうすればよいですか?