`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.nameuser.name(=”Saki”)と同じ意味になります。

⚠️ 注意:this の指す先は呼び出し方によって変わる

JavaScriptでは this の挙動がコンテキストによって変わるため注意が必要です。
TypeScriptでも、クラスの外にメソッドを切り出すと thisundefined になることがあるため、特にイベントハンドラなどでは 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 を正しく使うことで、クラスごとの「状態」や「振る舞い」を安全に管理することができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *