ホームページ > ウェブフロントエンド > jsチュートリアル > 「var that = this;」を使用する理由JavaScriptで?

「var that = this;」を使用する理由JavaScriptで?

Linda Hamilton
リリース: 2024-12-07 14:27:19
オリジナル
976 人が閲覧しました

Why Use

「var that = this;」の目的を理解するJavaScript 内

JavaScript を使用する場合、「var that = this;」というステートメントを含むコード スニペットに遭遇することがあります。この構造は、入れ子関数内、特にイベント ハンドラー内で「this」のコンテキストを保持する上で重要な役割を果たします。

JavaScript では、「this」キーワードは、現在のコンテキスト、または使用されているコードを所有するオブジェクトを表します。ただし、ある関数が別の関数内で呼び出される場合、「this」の値は変更されます。これは、特にイベント ハンドラーがコールバック内に存在するイベント駆動型コードにおいて、予期しない動作を引き起こす可能性があります。

「this」を「that」に割り当てる目的は、オブジェクトの現在のコンテキストを、失われる前にキャプチャすることです。範囲の変更に。 「this」を「that」にエイリアスすることで、ネストされた関数内でも「this」の元の値にアクセスできるようになります。

次の例を考えてみましょう。

$('#element').click(function() {
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function() {
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    });
});
ログイン後にコピー

このコードでは、イベント ハンドラー関数は、「this」キーワードを通じてクリックされた要素にアクセスできます。ただし、入れ子関数 (each()) 内では、「this」の値はループ内の現在の要素を参照します。外部関数で「this」を「that」としてキャプチャすると、最初にクリックされた要素に引き続きアクセスできます。

読みやすさを考慮して、「that」以外のエイリアスを使用することをお勧めします。上の例では、「clickedEl」のようなわかりやすい別名を使用すると、変数が何を参照しているのかがより明確になります。

結論として、「var that = this;」となります。これは、さまざまなスコープにわたって「this」の値を保持するための JavaScript の一般的な手法です。これにより、ネストされた関数が呼び出された場合でも、オブジェクトの元のコンテキストが確実に維持されます。

以上が「var that = this;」を使用する理由JavaScriptで?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート