ホームページ > ウェブフロントエンド > jsチュートリアル > コールバックで正しい「this」にアクセスするにはどうすればよいですか?

コールバックで正しい「this」にアクセスするにはどうすればよいですか?

WBOY
リリース: 2023-08-24 09:53:09
転載
1027 人が閲覧しました

コールバックで正しい「this」にアクセスするにはどうすればよいですか?

このチュートリアルでは、コールバックで正しい「this」にアクセスする方法を説明します。

「これ」キーワード

すべての関数には、「コンテキスト」とも呼ばれる this というキーワードが含まれており、その値は、関数がどのように、いつ、どこで定義されるかではなく、関数の呼び出し方法によって決まります。他の変数とは異なり、字句スコープの影響を受けません。他の言語と比較すると、関数の "this" キーワードを使用する場合、JavaScript は若干異なる動作をします。厳密モードと非厳密モードの間にはさらにいくつかの変更があります。

関数が最も一般的に呼び出される方法によって、「this」(実行時バインディング) の値が決まります。これは関数が呼び出されるたびに変更される可能性があり、実行時の割り当てによって変更することはできません。アロー関数は独自の "this" バインディングを提供しないため (アロー関数は、囲んでいる字句コンテキストの "this" 値を保持します)、関数が呼び出される回数ごとに、bind() メソッドでこの値を設定できます。

コールバックとは何ですか?

別の関数からパラメータを受け取る関数はコールバックと呼ばれ、通常は後から外部関数で使用されます。高階関数は、コールバックを受け入れる外部関数を説明するために使用される用語です。

関数は JavaScript のオブジェクトであるため、コールバックには独自のメソッドとプロパティのセットがあります。高階関数内で実行されるときにコールバックに割り当てられる「this」属性は、コールバックがどこで、どのように、いつ定義されるかではなく、コールバックの作成方法に完全に依存します。

コールバックを呼び出す高階関数を調べることで、コールバック内の「this」値を決定できます。囲んでいる関数の実際の定義には、ローカル スコープのプロパティが含まれている可能性があります。これが、コールバックにおけるこの問題の主な原因です。ただし、コールバックのコンテキストは呼び出し方法に応じて動的に変化するため、コールバックの「this」バインディングを介してプロパティにアクセスすると、そのプロパティは存在しません。

次に、コールバックで正しい「this」にアクセスする方法を学びます。

「セルフ」モードを使用する

self という名前の変数を作成し、宣言された関数のスコープ内でそれに this 値を割り当てるのが一般的なパターンです。 self という名前の新しい変数 (または他の有効な変数名でも可能) を作成し、それに値「this」を与えることで、目的の動作を実現できます。

###例### リーリー

アロー関数を使用する

ECMAScript 6 では、JavaScript アロー関数がデビューしました。これらには独自のバインディングがなく、従来の関数式に代わるよりクリーンな機能です。これにより、これがアロー関数内で参照された場合、スコープ内で通常の変数として検索されることが保証されます。

###例### リーリー

別の変数を使用して「この」オブジェクトを保存します

オブジェクトはそれにリンクされています。これは通常、コールバックでアクセスしようとするときに実際にアクセスしたいオブジェクトです。変数を作成し、その値をコールバック スコープの前に保存することは、これを実現する 1 つの方法です (ただし、プログラマーの中には、混乱を招くため、これを行うことに抵抗がある人もいます)。

これを「あれ」または「自分」と呼ぶ人もいますが、用語が明確であれば問題ありません。この回避策は、変数が字句スコープの要件を満たしているため、コールバックで使用できるため、非常に効果的です。コールバックの動的な this バインディングには引き続きアクセスできます。これは、このアプローチのもう 1 つの利点です。

###例### リーリー

これをオブジェクトに明示的にバインドする

##コールバックを定義するときに、必要なものを宣言できます。 bind() メソッドを使用して「this」値を設定すると、呼び出されたり渡されたりする方法や場所に関係なく、関数の実行中ずっとその値が維持されるようにすることができます。

bind() メソッドはすべての関数で使用でき、指定されたオブジェクトに接続された "this" プロパティを使用して新しい関数を作成します。返された関数と元の関数の唯一の違いは、「this」属性が指すものを完全に制御できることです。

###例### ああああ

以上がコールバックで正しい「this」にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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