static メソッド — static build(){}
JavaScript の static メソッドは「インスタンスを作らなくてもクラスから直接呼び出せる関数」です。
初心者は「クラスの便利関数」と覚えると理解しやすいです。インスタンスごとのデータにはアクセスできず、クラス全体で共通の処理をまとめるのに使います。
基本のコード例
class User {
constructor(name) {
this.name = name;
}
// static メソッド
static build(name) {
return new User(name);
}
}
const u = User.build("Aki"); // インスタンスを作る便利関数
console.log(u.name); // → "Aki"
JavaScriptstatic build()→User.build()のようにクラスから直接呼び出す。new User(...)を隠して「わかりやすい工場メソッド」を作れる。
よく使うテンプレート集
ユーティリティ関数
class MathUtil {
static square(x) {
return x * x;
}
static cube(x) {
return x * x * x;
}
}
console.log(MathUtil.square(3)); // 9
console.log(MathUtil.cube(2)); // 8
JavaScriptインスタンス生成の工場メソッド
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
static origin() {
return new Point(0, 0);
}
}
const p = Point.origin();
console.log(p); // Point { x: 0, y: 0 }
JavaScriptJSONからインスタンスを作る
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
static fromJSON(json) {
const obj = JSON.parse(json);
return new User(obj.name, obj.age);
}
}
const data = '{"name":"Mika","age":25}';
const u = User.fromJSON(data);
console.log(u.name, u.age); // → "Mika" 25
JavaScript例題: 商品クラスと工場メソッド
class Product {
constructor(name, price) {
this.name = name;
this.price = price;
}
static buildDefault() {
return new Product("未定義商品", 0);
}
}
const p1 = new Product("ノート", 100);
const p2 = Product.buildDefault();
console.log(p1); // Product { name: 'ノート', price: 100 }
console.log(p2); // Product { name: '未定義商品', price: 0 }
JavaScript- 効果:
buildDefault()を使うと「デフォルト商品」を簡単に作れる。
実務でのコツ
- 便利関数をまとめる: 計算や変換など、インスタンスに依存しない処理は
staticに。 - 工場メソッド: インスタンス生成をわかりやすくする。
- インスタンスからは呼べない:
u.build()はエラー。必ずClassName.build()。 - ES6以降の標準: モジュールやユーティリティクラスでよく使う。
ありがちなハマりポイントと対策
- インスタンスから呼べない:
const u = new User("Aki"); u.build();→ エラー。- 対策:
User.build()のようにクラスから呼ぶ。
thisの意味が違う:- static メソッド内の
thisは「クラス自身」を指す。
- static メソッド内の
練習問題(日時ユーティリティ)
class DateUtil {
static now() {
return new Date();
}
static format(date) {
return date.toISOString();
}
}
console.log(DateUtil.format(DateUtil.now()));
JavaScript- 効果:
DateUtil.now()で現在日時を取得し、DateUtil.format()で整形できる。
直感的な指針
static= クラス全体の便利関数。- インスタンス不要で呼べる。
- 工場メソッドやユーティリティ関数に最適。
- 初心者は「計算関数」「デフォルト生成」「JSON変換」で練習すると理解しやすい。
これを覚えれば「インスタンスに依存しない処理」を整理でき、クラス設計がぐっとわかりやすくなります。
