this の値が設定される場合
JavaScript では、this の値は関数の呼び出し方法によって決まります。これを設定するには主に 6 つの方法があります:
-
通常の関数呼び出し: これはグローバル オブジェクト (ブラウザーのウィンドウなど) に設定されるか、厳密モードでは未定義になります。
-
メソッド呼び出し: これは、メソッドが呼び出されるオブジェクトに設定されます。
-
.apply() または .call(): this
-
new 演算子: new を使用して関数を呼び出すと、新しいオブジェクトが作成され、this がそのオブジェクトに設定されます。
-
.bind(): 最初の引数として渡されたオブジェクトにバインドされる新しいスタブ関数を作成します。
-
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 サイトの他の関連記事を参照してください。