JavaScript | クラス継承でアロー関数を使うときの実務的な注意点

JavaScript JavaScript
スポンサーリンク

では「タイマーアプリ」のサンプルコードを一緒に作ってみましょう。
ここでは アロー関数と通常メソッドを混ぜて使う のがポイントです。


Timerクラスの実装例

class Timer {
  constructor() {
    this.seconds = 0;
    this.intervalId = null;
  }

  // ✅ アロー関数:コールバック用(thisを固定したい)
  tick = () => {
    this.seconds++;
    console.log(`経過時間: ${this.seconds}秒`);
  };

  // ✅ 通常メソッド:共通処理(インスタンス間で共有できる)
  start() {
    if (this.intervalId === null) {
      this.intervalId = setInterval(this.tick, 1000);
    }
  }

  // ✅ 通常メソッド
  stop() {
    clearInterval(this.intervalId);
    this.intervalId = null;
  }

  // ✅ 通常メソッド
  reset() {
    this.stop();
    this.seconds = 0;
    console.log("リセットしました");
  }
}

// --- 動作確認 ---
const timer = new Timer();
timer.start();

// 数秒後に止めたいとき
setTimeout(() => {
  timer.stop();
  console.log("ストップしました");
}, 5000);
JavaScript

💡 解説

  • tick(アロー関数)
    • setInterval に渡すときに this が壊れないようにアロー関数で定義。
    • これで this.seconds が常にインスタンスを指す。
  • start / stop / reset(通常メソッド)
    • 共通処理であり、インスタンス間で共有できるので通常メソッドにするのが効率的。

✅ まとめ

  • コールバックで使う関数 → アロー関数
  • 共通処理やインスタンス間で共有する関数 → 通常メソッド

👉 ここから発展させて「ブラウザの画面に経過時間を表示するタイマー」にしてみると、DOM操作と組み合わせてさらに理解が深まります。

タイトルとURLをコピーしました