`this` 演算子とは?
this
は、現在のインスタンス(オブジェクト)自身を指すキーワードです。
クラスの中で this
を使うことで、インスタンスのプロパティやメソッドにアクセスすることができます。
📌 例:this
の基本的な使い方
class User {
name: string;
constructor(name: string) {
this.name = name; // ← このインスタンスの name プロパティに代入
}
greet() {
console.log(`Hello, I'm ${this.name}`); // ← this.name でその人の名前を取得
}
}
const user = new User("Saki");
user.greet(); // Hello, I'm Saki
this.name
は 「このインスタンスのname
プロパティ」 を指します。user.greet()
の中でthis.name
はuser.name
(=”Saki”)と同じ意味になります。
⚠️ 注意:this
の指す先は呼び出し方によって変わる
JavaScriptでは this
の挙動がコンテキストによって変わるため注意が必要です。
TypeScriptでも、クラスの外にメソッドを切り出すと this
が undefined
になることがあるため、特にイベントハンドラなどでは bind()
やアロー関数を使うのが安全です。
class Counter {
count = 0;
increment() {
this.count++;
}
}
const counter = new Counter();
const fn = counter.increment;
// fn(); // ❌ this は undefined → 実行時エラー
const safeFn = counter.increment.bind(counter);
safeFn(); // ✅ this は counter に束縛される
✅ 対策:アロー関数を使って this
を固定
class Logger {
message = "ログ出力";
log = () => {
console.log(this.message); // アロー関数なら this は常にクラスインスタンス
};
}
✅ まとめ:this
演算子のポイント
特徴 | 説明 |
---|---|
指す対象 | 現在のインスタンス自身を指す |
用途 | プロパティやメソッドへのアクセス |
注意点 | メソッドを切り出すと this を失うことがある |
対策 | bind() やアロー関数で this を明示的に固定する |
this
を正しく使うことで、クラスごとの「状態」や「振る舞い」を安全に管理することができます。