(式と演算子)
https://ui.appleple.blog/JS/javascript-this.html
thisの正体は、スクリプトのどこからでも参照できる変数である。そして、すべての関数に渡されるthisの値は、関数が実行時に呼び出されるコンテクスト(状況)に依存する。さらに、Strict モードの有無によっても参照先が変わる。
thisの参照先は以下の条件で変化する(全8種類)。
- トップレベル(関数の外):グローバルオブジェクト
- 関数内:グローバルオブジェクト(Strict モードではundefined)
- アロー関数内:呼び出し元のオブジェクト(レシーバーオブジェクト(※))
- call / apply メソッド:引数で指定されたオブジェクト
- bind メソッド:引数で指定されたオブジェクト
- イベントリスナー / イベントハンドラー:イベントの発生元
- コンストラクター:生成されたインスタンス
- メソッド:呼び出し元のオブジェクト(レシーバーオブジェクト(※))
※ドット演算子、ブラケット演算子でオブジェクトのメソッドを読んだとき、演算子の左辺に指定したオブジェクト