ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の関数呼び出しとコールバックで「this」はどのように機能しますか?

JavaScript の関数呼び出しとコールバックで「this」はどのように機能しますか?

DDD
DDDオリジナル
2024-11-03 15:42:30376ブラウズ

How Does `this` Work in JavaScript Function Calls and Callbacks?

JavaScript でこのポインターが設定される場合

関数呼び出しでのこのポインターを理解する

JavaScript では、すべての関数呼び出しが設定されますこれに対する新しい価値。 this に割り当てられる値は、関数の呼び出しに使用されるメソッドによって決まります。

This ポインターを設定する主な方法

this ポインターを設定するには主に 6 つの方法があります。 JavaScript の場合:

  • 通常の関数呼び出し: デフォルトはグローバル オブジェクト (ウィンドウなど) または未定義 (厳密モード)。
  • メソッドCall: メソッドを所有するオブジェクトを指します。
  • **.apply() または .call(): 渡された引数に従ってこれを設定します。
  • Using new : 新しいオブジェクトを作成し、それに this を設定します。
  • **.bind(): 内部で .apply() を使用して、カスタム this 値を持つ新しい関数を返します。
  • ES6 Fat Arrow Functions: 現在の語彙の this 値をバインドします (オーバーライドできません)。

コールバック関数の This

コールバック関数これを設定するユニークな方法ではありません。呼び出し元の関数は、コールバックを呼び出すときに this 値を決定します。

分析例

コード スニペット内:

<code class="javascript">var randomFunction = function(callback) {
  var data = 10;
  callback(data);
};

var obj = {
  initialData: 20,
  sumData: function(data) {
    var sum = this.initialData + data;
    console.log(sum);
  },
  prepareRandomFunction: function() {
    randomFunction(this.sumData.bind(this));
  }
};

obj.prepareRandomFunction();</code>
  • obj.prepareRandomFunction() は、メソッド呼び出しを使用して、これを obj に設定します。
  • randomFunction(this.sumData.bind(this)) は、現在の this 値 (つまり、obj) をバインドする .bind() を使用します。コールバック関数が返されました。

したがって、randomFunction がコールバックを呼び出すと、this.sumData.bind(this) での .bind() の使用により、これは obj に設定されます。

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

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