プログラミングでよく登場するthisというキーワード。初めて見たときは「これって何者?」と思うかもしれません。でも、thisはとても役に立つもので、オブジェクト指向プログラミングで重要な役割を果たします。
thisの基本的な意味
thisは、現在のオブジェクト自身を指すキーワードです。言い換えれば、thisは「このオブジェクト」という意味を持っていて、その場面で使われているオブジェクトを表します。
例えば、クラスを使ってオブジェクトを作るとき、クラスの中でthisを使うことで、そのクラスが持つデータやメソッドにアクセスすることができます。
JavaScriptにおけるthis
JavaScriptでは、thisの動きは少し複雑です。thisが指すものは、その関数の呼び出し方によって変わります。
メソッドとして呼び出された場合:thisはそのメソッドが属するオブジェクトを指します。
const user = {
name: '太郎',
sayHello: function() {
console.log(`こんにちは、私は${this.name}です。`);
}
};
user.sayHello(); // こんにちは、私は太郎です。
この場合、thisはuserオブジェクトを指します。
関数として呼び出された場合:thisはグローバルオブジェクト(ブラウザならwindow)を指します。
function showThis() {
console.log(this);
}
showThis(); // グローバルオブジェクト(ブラウザでは`window`)
アロー関数の場合:アロー関数では、thisはその関数が定義されたスコープのthisを引き継ぎます。
const user = {
name: '太郎',
sayHello: () => {
console.log(`こんにちは、私は${this.name}です。`);
}
};
user.sayHello(); // こんにちは、私はundefinedです。
アロー関数ではthisがuserを指さないので、nameはundefinedになってしまいます。
Javaにおけるthis
Javaなどのオブジェクト指向プログラミング言語では、thisはもっとシンプルです。クラスのメンバ変数やメソッドにアクセスするために使われ、現在のインスタンスを指します。
public class Person {
String name;
public Person(String name) {
this.name = name; // `this`は現在のインスタンスを指す
}
public void greet() {
System.out.println("こんにちは、私は" + this.name + "です。");
}
}
この場合、this.nameはそのクラスのインスタンスのnameを指し、コンストラクタで渡された引数と区別するために使われています。
まとめ
thisは「今、自分が操作しているオブジェクト」を表すキーワードです。プログラミング言語によって意味や使い方が少し異なるので、最初は混乱するかもしれませんが、慣れてくるとクラスやオブジェクトを扱う際に非常に便利です。
覚えておくべきポイントは、thisがどのオブジェクトを指しているかはコードがどのように呼び出されているかによって決まることです。実際にコードを書いて試してみることで、thisの使い方にもっと慣れていけると思います!
最後までよんでいただきありがとうございます。
@y-t0910をフォロー,いいねしていただけると嬉しいです!