静的メソッドと静的プロパティの使い方 | クラスベースのオブジェクト指向 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク

静的メソッドとプロパティとは?

JavaScriptのクラスには、インスタンスに依存しない静的メソッド静的プロパティを定義することができます。これらはクラス自体に属し、インスタンスを生成しなくてもクラス名から直接アクセス可能です。staticキーワードを使って定義します。

静的メソッドの定義と使い方

静的メソッドは、クラスに属し、インスタンスを必要としないメソッドです。以下のように定義します。

class MathOperations {
    static add(a, b) {
        return a + b;
    }
}

console.log(MathOperations.add(5, 10));  // 出力: 15

この例では、MathOperationsクラスにaddという静的メソッドが定義されています。インスタンスを作成せずに、クラス名を使って直接呼び出せます。

静的プロパティの定義と使い方

静的プロパティはクラス自体に紐づくプロパティであり、インスタンスに依存しません。JavaScriptのクラスではstaticキーワードを使用して静的プロパティを定義します。

class Company {
    static companyName = "Tech Innovators";
}

console.log(Company.companyName);  // 出力: Tech Innovators

この例では、CompanyクラスにcompanyNameという静的プロパティが定義されています。これもクラス名を使って直接アクセス可能です。

静的メソッドと静的プロパティの特徴

静的メソッドとプロパティの特徴を以下の表にまとめます。

項目 説明
静的メソッド クラスに直接属し、インスタンスを生成せずに呼び出せるメソッド。
静的プロパティ クラスに属する変数で、インスタンスに依存しないプロパティ。
使用方法 クラス名.メソッド名、またはクラス名.プロパティ名でアクセス。
インスタンスからのアクセス インスタンスからはアクセスできない(クラス名を使用する必要がある)。

静的メソッドの活用例

静的メソッドは、インスタンス固有のデータを必要としないユーティリティ関数や共通処理を定義する際に便利です。以下に、静的メソッドを使った具体例を示します。

class TemperatureConverter {
    static toCelsius(fahrenheit) {
        return (fahrenheit - 32) * 5 / 9;
    }

    static toFahrenheit(celsius) {
        return (celsius * 9 / 5) + 32;
    }
}

console.log(TemperatureConverter.toCelsius(68));  // 出力: 20
console.log(TemperatureConverter.toFahrenheit(20));  // 出力: 68

この例では、TemperatureConverterクラスに摂氏と華氏の温度変換を行う静的メソッドが定義されています。インスタンスを生成することなく、クラス名を使って温度変換を行えます。

静的プロパティの活用例

静的プロパティは、クラスに関連する定数や設定値を保持するのに便利です。以下に、静的プロパティを使った例を示します。

class GameSettings {
    static maxPlayers = 4;
    static gameName = "Super Fun Game";

    static getSettings() {
        return `Game: ${this.gameName}, Max Players: ${this.maxPlayers}`;
    }
}

console.log(GameSettings.getSettings());  // 出力: Game: Super Fun Game, Max Players: 4

この例では、GameSettingsクラスにmaxPlayersgameNameといった静的プロパティが定義されています。これらのプロパティはゲームの設定値としてクラスに保持され、インスタンスを生成することなくアクセスできます。

まとめ

静的メソッドとプロパティは、クラスに属するユーティリティ関数や定数を扱う際に便利です。staticキーワードを使うことで、インスタンスを生成せずにクラス名から直接アクセスできます。静的メソッドはインスタンス固有のデータに依存しない処理に、静的プロパティはクラス全体で共有するデータに使用されます。

これにより、JavaScriptのクラス設計がより効率的でシンプルになります。これらの概念を理解し、実際のプロジェクトで活用することで、再利用可能で保守性の高いコードを作成することができます。