JavaScriptの「this」って、何者?
JavaScriptを始めたばかりだと、「this」って言葉に戸惑いますよね。でも、安心してください!「this」は、「今、誰がコードを実行しているの?」 を教えてくれる、便利なキーワードなんです。
例えるなら、パーティー会場で「私は〇〇です!」と自己紹介するようなもの。誰が話しているかによって、「〇〇」に入る名前は変わりますよね?JavaScriptの「this」も同じで、コードを実行する場所によって、その意味が変わってくるんです。
「this」の正体を探る! いろんな場面での「this」
1.オブジェクトの中で使う「this」
オブジェクトって、名前や年齢などの情報をまとめた箱みたいなものです。この箱の中に、「自己紹介する」機能を持たせてみましょう。
const person = {
name: 'Alice',
greet: function() {
console.log(`こんにちは、私は${this.name}です!`);
}
};
person.greet(); // 出力: こんにちは、私はAliceです!
この例では、greet
という自己紹介機能の中で「this」を使っています。この「this」は、person
というオブジェクト自身を指しているので、「私はAliceです!」と出力されるわけです。
2.普通の関数の中で使う「this」
JavaScriptには、オブジェクトの中に入っていない、普通の関数もあります。
function sayHello() {
console.log(こんにちは、${this}から!);
}
sayHello();
この場合、「this」はブラウザの「window」というものを指します。「window」とは、Webページ全体を包んでいる大きな箱のようなものです。この箱の中には、Webページを表示するための様々な機能や情報が入っています。なので、「こんにちは、[object Window]から!」のような出力になります。
3.新しいオブジェクトを作る関数の中で使う「this」
オブジェクトをたくさん作るための、特別な関数があります。これを「コンストラクタ関数」と呼びます。
function Car(brand) {
this.brand = brand;
}
const myCar = new Car('Toyota');
console.log(myCar.brand); // 出力: Toyota
この例では、「Car」というコンストラクタ関数の中で「this」を使っています。この「this」は、新しく作られる車オブジェクトを指します。なので、myCar.brand
で「Toyota」という情報を取り出せるんです。
4.ボタンをクリックした時の「this」
Webページのボタンをクリックした時などに実行されるのが、「イベントハンドラ」です。
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
console.log(this); // クリックされたボタン自身
});
この例では、「myButton」というボタンがクリックされた時に、「this」はクリックされたボタン自身を指します。
メソッドチェーン:「this」で連続技!
「this」を使うと、オブジェクトの機能を連続で実行できます。
const calculator = {
value: 0,
add: function(num) {
this.value += num;
return this; // 自分自身を返す
},
subtract: function(num) {
this.value -= num;
return this;
}
};
calculator.add(5).subtract(3); // 5を足して、3を引く
この例では、「add」メソッドの中で「this」を返すことで、「calculator.add(5)」の結果に対して、さらに「subtract(3)」を実行できるようになっています。
まとめ:「this」を使いこなそう!
JavaScriptの「this」は、コードの実行場所によって意味が変わってくる、ちょっと不思議なキーワードです。でも、この記事で紹介した例を参考にすれば、きっと理解できるはずです。「window」はWebページ全体を包む大きな箱のようなもの、と覚えておきましょう。
「this」を使いこなせば、あなたのJavaScriptコードはもっとスッキリ、もっとパワフルになりますよ!
※参考にする場合は自己責任でお願いします。