[解決済み] JavaScriptで「var that = this;」とはどういう意味ですか?
2022-03-14 15:59:57
質問
JavaScriptのファイルで、私は見ました。
function Somefunction(){
var that = this;
...
}
を宣言する目的は何ですか?
that
を代入し
this
ということですか?
どのように解決するのですか?
この回答は、まず図解で説明することにします。
var colours = ['red', 'green', 'blue'];
document.getElementById('element').addEventListener('click', function() {
// this is a reference to the element clicked on
var that = this;
colours.forEach(function() {
// this is undefined
// that is a reference to the element clicked on
});
});
私の回答は、もともとjQueryで実証したもので、ごくわずかな違いしかありません。
$('#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
は、新しい関数を呼び出してスコープを変更すると頻繁に変更されるため、これを使用して元の値にアクセスすることはできません。 それをエイリアスで
that
の元の値にアクセスすることができます。
this
.
個人的には
that
をエイリアスとして使用します。 特に関数が数行より長い場合、それが何を指しているのかが明らかになることはほとんどありません。I
常に
は、より説明的なエイリアスを使用します。 上記の例では、私はおそらく
clickedEl
.
関連
-
JavaScriptの関数この指摘の問題を説明
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
jsを使った簡単な照明スイッチのコード
-
JavaScriptのクロージャの説明
-
Vueにシンプルなメモ帳機能を実装
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。