JavaScript で setTimeout や addEventListener のコールバック関数に引数を渡す方法
はじめに
JavaScript で setTimeout
, setInterval
, addEventListener
のコールバック関数に引数を渡す方法をまとめた。
TL;DR
setTimeout
,setInterval
にはbind(<this>, <args>)
- コールバック関数内では、関数定義の仮引数でアクセス
addEventListener
には第二引数を Object 型で渡す- コールバック関数内では
this.args
で引数にアクセス
- コールバック関数内では
目的・やったこと
setTimeout
, setInterval
, addEventListener
のコールバック関数に引数を渡したかったので調べてまとめた。
目次
環境・条件
1 | Google Chrome バージョン: 76.0.3809.100(Official Build) (64 ビット) |
詳細
setTimeout, setInterval
bind
で束縛。第一引数は this
に対応するパラメータなので、使わない場合は null
で良い。
1 | setTimeout(function(your, args) { |
this
に Object 型の変数を渡して、こんな風に使っても良い。
1 | args = {foo: 1, bar: ["a", "b", "c"], baz: {hoge: "fuga"}}; |
addEventListener
第二引数を Object 型にし、handleEvent
にコールバック関数を渡しつつ、好きな名前で引数を渡せば良い。
1 | const handler = function(event) { |
こんな結果になる。
Object 内で capture: true
とすれば、useCapture = true
としたのと同じになる(はず)。
あるいは setTimeout
, setInterval
と同様に bind
でも可。
1 | document.addEventListener('click', function (flg, count) { |
クリックすると↓がコンソール上に表示される。
1 | { flg: true, count: 5 } |
まとめ
setTimeout
,setInterval
にはbind(<this>, <args>)
- コールバック関数内では、関数定義の仮引数でアクセス
addEventListener
には第二引数を Object 型で渡す- コールバック関数内では
this.args
で引数にアクセス
- コールバック関数内では
参考文献
- EventTarget.addEventListener() - Web API | MDN
- JavaScript の超便利なメソッド bind で this を制御する – Foreignkey, Inc.
- addEventListenerで関数に引数を渡す - Qiita
- このコメント を参照
関連記事
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- Chart.js(vue-chartjs) でツールチップの表示内容を変更
- Vue.js で日本語変換での誤発火を抑止しつつ Enter キーで Submit
- ツールチップを簡単に表示できる Tippy.js の使い方
- axios で unable to verify the first certificate の対応方法
- Vue で子コンポーネントのメソッドをコールする
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア