目次
「これ」キーワード
コールバックとは何ですか?
「セルフ」モードを使用する
アロー関数を使用する
ECMAScript 6 では、JavaScript アロー関数がデビューしました。これらには独自のバインディングがなく、従来の関数式に代わるよりクリーンな機能です。これにより、これがアロー関数内で参照された場合、スコープ内で通常の変数として検索されることが保証されます。
オブジェクトはそれにリンクされています。これは通常、コールバックでアクセスしようとするときに実際にアクセスしたいオブジェクトです。変数を作成し、その値をコールバック スコープの前に保存することは、これを実現する 1 つの方法です (ただし、プログラマーの中には、混乱を招くため、これを行うことに抵抗がある人もいます)。
これを「あれ」または「自分」と呼ぶ人もいますが、用語が明確であれば問題ありません。この回避策は、変数が字句スコープの要件を満たしているため、コールバックで使用できるため、非常に効果的です。コールバックの動的な this バインディングには引き続きアクセスできます。これは、このアプローチのもう 1 つの利点です。
ホームページ ウェブフロントエンド jsチュートリアル コールバックで正しい「this」にアクセスするにはどうすればよいですか?

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

Aug 24, 2023 am 09:53 AM

コールバックで正しい「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 サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

jQueryマトリックス効果 jQueryマトリックス効果 Mar 10, 2025 am 12:52 AM

マトリックスの映画効果をあなたのページにもたらしましょう!これは、有名な映画「The Matrix」に基づいたクールなJQueryプラグインです。プラグインは、映画の古典的な緑色のキャラクター効果をシミュレートし、画像を選択するだけで、プラグインはそれを数値文字で満たされたマトリックススタイルの画像に変換します。来て、それを試してみてください、それはとても面白いです! それがどのように機能するか プラグインは画像をキャンバスにロードし、ピクセルと色の値を読み取ります。 data = ctx.getimagedata(x、y、settings.greasize、settings.greasize).data プラグインは、写真の長方形の領域を巧みに読み取り、jQueryを使用して各領域の平均色を計算します。次に、使用します

jQueryのパフォーマンスを即座に増やす10の方法 jQueryのパフォーマンスを即座に増やす10の方法 Mar 11, 2025 am 12:15 AM

この記事では、スクリプトのパフォーマンスを大幅に向上させるための10の簡単な手順の概要を説明します。 これらの手法は簡単で、すべてのスキルレベルに適用できます。 更新の維持:NPMのようなパッケージマネージャーを使用して、Viteなどのバンドラーを使用して確認してください

JavaScriptによる構造マークアップの強化 JavaScriptによる構造マークアップの強化 Mar 10, 2025 am 12:18 AM

キーポイントJavaScriptを使用した構造的なタグ付けの強化は、ファイルサイズを削減しながら、Webページコンテンツのアクセシビリティと保守性を大幅に向上させることができます。 JavaScriptを効果的に使用して、Cite属性を使用して参照リンクを自動的にブロック参照に挿入するなど、HTML要素に機能を動的に追加できます。 JavaScriptを構造化されたタグと統合することで、ページの更新を必要としないタブパネルなどの動的なユーザーインターフェイスを作成できます。 JavaScriptの強化がWebページの基本的な機能を妨げないようにすることが重要です。 高度なJavaScriptテクノロジーを使用できます(

シンプルなjQueryスライダーを構築する方法 シンプルなjQueryスライダーを構築する方法 Mar 11, 2025 am 12:19 AM

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

See all articles