カプセル化 (Encapsulation) とは

オブジェクトの内部データ(プロパティ)を外部から隠し、不正な操作や書き換えを防ぐ仕組みです。「中身は秘密だけど、操作用のボタン(メソッド)だけは公開する」という考え方です。

プライベートプロパティ (#)

JavaScriptでは、プロパティ名の先頭に # を付けることで、そのプロパティをクラス外部からアクセス不可(プライベート)にできます。

class Fan {
  #blades; // プライベートプロパティ

  constructor(blades) {
    this.#blades = blades;
  }

  showInfo() {
    // 〇 クラス内部からはアクセス可能
    console.log(`羽根の数: ${this.#blades}`);
  }
}

const myFan = new Fan(5);
myFan.showInfo(); // 〇 5
// console.log(myFan.#blades); // × エラー(外部からは見えない)

メリット