ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「this」キーワードは、さまざまな関数呼び出しコンテキストでどのように動作しますか?

JavaScript の「this」キーワードは、さまざまな関数呼び出しコンテキストでどのように動作しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 15:16:14448ブラウズ

How Does the JavaScript `this` Keyword Behave in Different Function Invocation Contexts?

関数における "this" キーワードのダイナミクスを明らかにする

JavaScript の領域では、"this" キーワードは処理時に非常に重要です。機能付き。その値は、使用される呼び出しパターンによって異なります。

呼び出しパターン

JavaScript 関数は、次の 4 つの異なる方法で呼び出すことができます。

  1. メソッドとして:
    関数がオブジェクトのメソッドとして呼び出される場合、「this」はオブジェクト自体を指します。例:

    const foo = {
      bar() {
        console.log(this); // Logs "foo"
      }
    };
    foo.bar();
  2. 関数として:
    関数がスタンドアロン エンティティとして呼び出される場合、「this」はデフォルトでグローバル オブジェクトになります (通常はブラウザでは「ウィンドウ」)。例:

    function bar() {
      console.log(this); // Logs "Window" (global object)
    }
    bar();
  3. コンストラクターとして (「new」キーワードを使用):
    関数が「new」キーワードを使用して呼び出される場合、新しいオブジェクトが作成され、「this」はそのオブジェクトを指します。例:

    function Constructor() {
      this.property = "value";
    }
    const instance = new Constructor();
    console.log(instance.property); // Logs "value"
  4. 「apply」メソッドの場合:
    「apply」メソッドでは、物体。例:

    function bar(a, b) {
      console.log(this); // Logs "obj"
      console.log(a); // Logs "1"
      console.log(b); // Logs "2"
    }
    const obj = {
      a: 1,
      b: 2
    };
    bar.apply(obj);

入れ子関数とコールバックの影響

入れ子関数とコールバックでは、親関数の呼び出しパターンによって、入れ子関数の「this」の値。親関数がメソッドとして呼び出される場合、「this」はオブジェクトを指します。関数として呼び出された場合は、グローバル オブジェクトを参照します。コールバックで「this」の目的の値を保持するには、バインディング関数やアロー関数の使用などのテクニックが採用されます。

以上がJavaScript の「this」キーワードは、さまざまな関数呼び出しコンテキストでどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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