【JavaScript】イベントリスナのコールバック関数に任意の引数を渡す方法

こんばんわ。ゆうきです。

ImgPreviewerの制作時にイベントリスナーのコールバックに引数を渡す方法を調べて衝撃を受けたので、思わずメモメモ

やり方

いきなり結論!「handleEvnetとして登録した関数オブジェクトにプロパティとして値を追加する」!?

具体的なやり方(サンプルコード)は以下の通り。

<button id="btn">クリックイベント発火用のボタン</button>
<script>
    const btn = document.getElementById('btn');
    const hoge = 'hogehoge';

    btn.addEventListener('click', {
        handleEvent: myfunc, // ここでコールバック関数を指定。
        hoge,
        fuga: 'fuga',
    });

    function myfunc(e) {
        console.log(e);
        console.log(this.hoge);
        console.log(this.fuga)
    }
</script>

↑このコードを実行した結果は下の画像の通り

ボタンクリック後の結果

Eventオブジェクトと共にhoge、 fugaの値もしっかりと受け取れています。

まとめ

まさかこんな方法で値の引き渡しができるとは・・・

関数”オブジェクト”っていうのを初めて実感した。。。衝撃。。。

ゆうき

都内某企業でWebエンジニアをやっている人。 普段はPHPとJavaScriptを使って業務を行ってます。 プライベートでは好き勝手にアプリや3DCGを作る個人サークルのStudio Babeをやっています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です