-
グローバルコンテキスト: グローバルスコープ(最上位のスコープ)での
this
は、通常はグローバルオブジェクト(ブラウザ環境ではwindow
オブジェクト、Node.js環境ではglobal
オブジェクト)を指す。 -
関数コンテキスト: 関数内での
this
は、関数が呼び出された方法によって異なる値を持つ。-
通常の関数呼び出し: 通常の関数呼び出しでは、
this
はグローバルオブジェクト(ブラウザ環境ではwindow
オブジェクト、Node.js環境ではglobal
オブジェクト)を指す。ただし、厳格モード ("use strict"
) で関数が実行されている場合、this
はundefined
になる。 -
メソッド呼び出し: オブジェクトのメソッドとして関数が呼び出された場合、
this
はそのメソッドを呼び出したオブジェクト自体を指す。 -
コンストラクタ呼び出し: コンストラクタ関数からオブジェクトを生成する際、
this
は新しく生成されたオブジェクトを指す。 -
call
やapply
メソッドの使用:call
やapply
メソッドを使用して関数を呼び出す場合、明示的に指定したオブジェクトがthis
となる。
-
-
アロー関数: アロー関数内の
this
は、通常の関数とは異なる挙動を示す。アロー関数内のthis
は、関数が定義された時点での外部スコープのthis
をキャプチャし、関数内でその値を保持する。そのため、アロー関数内のthis
は実行コンテキストによらず一定の値を持つ。