JavaScriptのクラスフィールド
本記事では、JavaScriptにおけるクラスフィールドについて詳しく解説します。クラスフィールドの基本的な構文や使用例、プライベートフィールドの仕組みまでを学びます。
クラスフィールドとは
クラスフィールドとは、JavaScriptのクラス構文で定義されるプロパティのことです。従来のクラスでは、プロパティをコンストラクタ内で初期化する必要がありましたが、クラスフィールドを使うことで、クラス定義の外にプロパティを簡潔に記述できます。
クラスフィールドは主に以下の特徴を持ちます:
- フィールドをクラススコープ内で定義可能
- パブリックフィールドとプライベートフィールドをサポート
- 初期化コードを簡潔に記述可能
構文と基本的な例
クラスフィールドの基本的な構文は以下の通りです:
class クラス名 {
フィールド名 = 初期値;
}
例として、以下のコードを見てみましょう:
class Person {
name = "匿名";
age = 0;
introduce() {
return `名前: ${this.name}, 年齢: ${this.age}`;
}
}
const person = new Person();
console.log(person.introduce()); // 名前: 匿名, 年齢: 0
パブリックフィールド
パブリックフィールドは、クラス外部からアクセス可能なフィールドです。特にキーワードを指定する必要はなく、クラスフィールドを単に定義するだけでパブリックになります。
以下はその例です:
class Car {
brand = "Toyota";
model = "Corolla";
details() {
return `ブランド: ${this.brand}, モデル: ${this.model}`;
}
}
const car = new Car();
console.log(car.details()); // ブランド: Toyota, モデル: Corolla
car.brand = "Honda";
console.log(car.details()); // ブランド: Honda, モデル: Corolla
プライベートフィールド
プライベートフィールドは、クラス外部から直接アクセスできないフィールドです。定義する際に先頭に「#
」を付けます。
以下はその例です:
class BankAccount {
#balance = 0;
deposit(amount) {
if (amount > 0) {
this.#balance += amount;
}
}
getBalance() {
return this.#balance;
}
}
const account = new BankAccount();
account.deposit(100);
console.log(account.getBalance()); // 100
console.log(account.#balance); // SyntaxError: Private field '#balance' must be declared in an enclosing class
この例では、#balance
フィールドがプライベートであるため、外部から直接アクセスするとエラーになります。
使用例とユースケース
クラスフィールドはさまざまなユースケースで役立ちます。たとえば、デフォルト値を設定したり、内部状態をカプセル化したりするのに便利です。
以下の例では、ユーザー情報を管理するクラスを示します:
class User {
name = "未設定";
#password = "";
setPassword(newPassword) {
if (newPassword.length >= 8) {
this.#password = newPassword;
}
}
authenticate(password) {
return this.#password === password;
}
}
const user = new User();
user.setPassword("securePass");
console.log(user.authenticate("securePass")); // true
数学的表現との対応
クラスフィールドを数学的に表現すると、ある関数 \( f(x) \) の定義域 \( x \) に対応する変数や定数と見なせます。
例えば、以下のコード:
class Circle {
radius = 1;
area() {
return Math.PI * this.radius ** 2;
}
}
この場合、radius
は円の半径に相当し、面積は以下の式で表されます:
\[ A = \pi r^2 \]
クラスのフィールドとして定義することで、この数学的なモデルをコードとして直感的に表現できます。
以上で、JavaScriptのクラスフィールドについての解説を終わります。