カプセル化 (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); // × エラー(外部からは見えない)
メリット
- 安全性: 予期せぬ場所からデータが書き換えられるのを防ぐ。
- 保守性: 内部の仕組みを修正しても、外部(メソッドの呼び出し側)に影響を与えにくい。