今回はthis についてまとめました。
this を初めて勉強したとき、理解できなかったです。
私と同じように理解不十分な方に、この記事がすこしでもヒントになればうれしいです。

thisとは?

~Crebitテキストより~
this(ディス) とは、「イベントが発生したその要素自身」 を指す特別なキーワードです。
複数のボタンがあっても、クリックされたボタンごとに this が切り替わります。
同じ処理を書いても「自分がクリックされたボタンだけ」を操作できるのです。
イメージとしては 「this=私自身」 と考えると理解しやすくなります。

🪄 イメージで理解するthis

ボタン A と ボタン B があるとします。
どちらもあなたに向かって「クリックされたらこの処理を実行してね」と頼んできます。
そこで、あなたはひとつの関数を用意し、両方に渡します。

function handleClick() {
  console.log(this); //←クリックされたボタンそのもの
}
buttonA.onclick = handleClick;
buttonB.onclick = handleClick;


実際にクリックが起こると…
・ボタン A がクリック → ボタン A があなた(関数)に向かって「今クリックしたの私です」と名乗る
・ボタン B がクリック → ボタン B が名乗る

この“名乗り”を受け取る場所が this です。
つまりそのイベントを起こした本人。
ここでは「クリックされたボタンそのもの」を指します。
クリックしたのが A なら this は A、B なら B になります。
同じ関数を渡していても、動く相手は毎回きちんと切り替わります。

どんな場面で使うの?

1. 複数の要素に同じ処理をさせたいとき
クリックされたボタンだけ色を変えたい場合

let btn = document.getElementById(“myButton”);
btn.onclick = function() {
  this.style.backgroundColor = “green”;
};

・押されたボタンだけが変わる
・「どのボタンが押されたか」を this が教えてくれる

2. ID や class を毎回書きたくないとき
押された本人に働きかけたいだけの場面。

function toggle() {
  this.classList.toggle(“active”);
}
item1.onclick = toggle;
item2.onclick = toggle;
item3.onclick = toggle;

this があるおかげで、どの要素が主語なのかをコードに毎回書かなくて済みます。

3. リストやフォームで「選ばれた行だけ」扱いたいとき

row.onclick = function() {
  this.classList.add(“selected”);
};

どの行がクリックされたかを自分で探す必要がなく、
this がその役目を担ってくれます。

まとめ

this(ディス) とは、「イベントが発生したその要素自身」 を指すキーワードです。
・複数の要素をひとまとめの関数で処理したいとき
・「誰が押されたのか」を自動で切り替えてほしいとき
こうした場面でとても役に立ちます。
初めは理解が難しいかもしれませんが、使い慣れると便利ですね。