ホームページ >ウェブフロントエンド >jsチュートリアル >コールバック関数が呼び出されるときの「this」の値は何で決まるのでしょうか?

コールバック関数が呼び出されるときの「this」の値は何で決まるのでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 03:56:021031ブラウズ

What Determines the Value of `this` When a Callback Function Is Called?

this の値が設定される場合

JavaScript では、this の値は関数の呼び出し方法によって決まります。これを設定するには主に 6 つの方法があります:

  1. 通常の関数呼び出し: これはグローバル オブジェクト (ブラウザーのウィンドウなど) に設定されるか、厳密モードでは未定義になります。
  2. メソッド呼び出し: これは、メソッドが呼び出されるオブジェクトに設定されます。
  3. .apply() または .call(): this
  4. new 演算子: new を使用して関数を呼び出すと、新しいオブジェクトが作成され、this がそのオブジェクトに設定されます。
  5. .bind(): 最初の引数として渡されたオブジェクトにバインドされる新しいスタブ関数を作成します。
  6. ES6 Fat Arrow Function: this

コールバック関数の場合

あなたの例では:

<code class="javascript">randomFunction(this.sumData.bind(this));</code>
  • this.sumData .bind(this) は .bind() を使用して this を obj オブジェクトにバインドします。
  • その結果、randomFunction がコールバック関数を呼び出すと、.bind() により this は obj に設定されます。
  • this.sumData.bind(this) を callback(data) と交換する場合、randomFunction 内の this はグローバル オブジェクト (または strict モードでは未定義) に設定されます。

これは次のとおりです。コールバックは this.sumData.bind(this) への参照として渡されるためですが、randomFunction がコールバックを呼び出すと、通常の関数呼び出しのルールに従ってこれが設定されます。

以上がコールバック関数が呼び出されるときの「this」の値は何で決まるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。