JavaScriptでは、「this」の値は関数の呼び出し方法によって決まります。関数を直接呼び出す場合は、「this」の値を制御します。
ただし、関数がコールバックまたはイベント ハンドラーとして渡されると、外部コードがそれらを呼び出すため、予期しない「this」値が発生します。 「this」が特定のオブジェクトを参照していることを確認するには、.bind メソッドを使用できます。
.bind を使用すると、関数を呼び出す前に「this」の値を設定し、効果的にそのオブジェクトにバインドできます。
この問題は、JavaScript の実行環境が「this」の値を決定する方法に起因して発生します。関数が定義されている場合、「this」は未定義です。関数がオブジェクトのメソッドとして呼び出される場合、「this」はそのオブジェクトを参照します。
ただし、関数が独立して呼び出される場合、またはコールバックとして呼び出される場合、「this」は通常、グローバル オブジェクトを参照します。 (または厳密モードでは未定義)。一貫性と正しい動作を確保するには、.bind.
例 3 では、storeMyName3 が直接呼び出します。 getName 関数。myName.name の値を返します。この結果は、関数ではなく値であるstoreMyName3に割り当てられます。
対照的に、例1と2では、storeMyNameとstoreMyName2はgetName関数自体への参照です。これらを呼び出すときは、関数を実行して結果を取得します。
例 2 では、関数を呼び出す前に .bind(myName) を使用して "this" の値を myName に設定します。これにより、 this.name が myName.name を参照することが保証されます。
したがって、例 3 では後で関数を呼び出さないため、「this」の問題は発生しませんが、例 1 と 2 では .bind が必要です。今後呼び出されるときに「this」値を明示的に設定します。
以上がJavaScript で「this」のバインディングが必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。