これは JavaScript 言語のキーワードです。
この値は、関数が使用される場所によって変わります。ただし、一般的な原則があり、これは常に last を呼び出したオブジェクトを指します。
これが指し示す形(4種類)
- 一般的な関数の場合、これはグローバル オブジェクト ウィンドウを指します。
- 厳密モードでは未定義 "use strict"
- オブジェクトのメソッドで呼び出され、メソッドを呼び出すオブジェクトを指します
- コンストラクターの this は、new によって作成されたインスタンスを指していますが、
なぜこれが指しているのですか? 最初に、 new キーワードは空のオブジェクトを作成し、次に自動的に関数適用メソッド (たとえば、このメソッドである必要はありません) を呼び出し、これをこの空のオブジェクトにポイントします。これにより、関数内の this がこの空のオブジェクトに置き換えられます。その代わり。
これが戻ってくると
戻り値がオブジェクトの場合、これは返されたオブジェクトを指し、戻り値がオブジェクトでない場合、これは関数のインスタンスを指します。
注: null もオブジェクトですが、null は特別なので、ここでは this はその関数のインスタンスを指します。
これが指し示す方法を変更する
- call: 最初のパラメーターに加えて、複数のパラメーターを追加できます b.call(a,1,2)
- apply: call と似ていますが、2 番目のパラメーターは配列 b.apply(a,[1,2]) でなければならないという違いがあります。
- 注: call と apply の最初のパラメーターが null の場合、これはウィンドウ オブジェクトを指します。
- bind: 複数のパラメータが存在する可能性があり、実行可能になったときにパラメータを再度追加できますが、パラメータは仮パラメータの順序であることに注意してください。
要約:
- 呼び出しと適用の両方がコンテキスト内の this を変更し、関数をすぐに実行します
- bind メソッドを使用すると、対応する関数をいつでも呼び出すことができ、実行中にパラメーターを追加できます。