関数内での "this" キーワードのコンテキスト動作
これまで観察したように、JavaScript 内で "this" キーワードは予期しない動作を示す可能性があります。機能。この動作は、関数が本質的に特定のオブジェクトにバインドされるのではなく、呼び出しパターンによって決定される「this」バインディングを持つ JavaScript の動的な性質に由来しています。
クラス メソッドでは、「this」は、メソッドが呼び出されたクラス。ただし、(先行するドット演算子なしで) 関数として直接呼び出された場合、「this」はデフォルトでグローバル オブジェクト (通常はブラウザのウィンドウ オブジェクト) になります。
「this」に影響する呼び出しパターン:
設計の背後にある理由:
「この」バインディング動作が恣意的であると考える人もいるかもしれませんが、これは、厳密な型指定よりも柔軟性を重視する JavaScript の設計哲学と一致しています。関数はさまざまなコンテキストで再利用でき、関数の「this」バインディングは「var that = this」などの手法を使用してそれに応じて調整できます。
この動作の根本的な理由は、JavaScript に真のクラスが欠如していることです。代わりに、オブジェクトと関数を使用してオブジェクト指向の構造を作成します。これにより、開発者はカスタム継承階層を定義し、実行時にオブジェクトを動的に作成および変更できます。
概要:
JavaScript 関数の "this" キーワードは、以下に基づいて動的にバインドされます。呼び出しパターン。クラス メソッドでは、クラス インスタンスを参照しますが、直接関数呼び出しでは、グローバル オブジェクトを参照します。 「var that = this」を設定するような手法は、呼び出しパターンが明らかでないコールバックやその他の複雑な状況での「this」バインディングの管理に役立ちます。
以上が呼び出しパターンに基づいて、JavaScript 関数で「this」キーワードの動作はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。