名前空間としてのクラス(=ステートレスオブジェクト)

2024/09/08に公開

クラスは様々な機能を持っていますが、
そのうちの1つに「名前空間」があります

名前空間については以下の記事をご確認ください
https://zenn.dev/417yr/articles/73eb46a71be8ba

【ステートレスオブジェクト】

  • クラスを名前空間として使うにはstaticが必要
    • クラスをインスタンス化せずに、そのまま使える
  • クラス内で定義されたデータはメンバ変数と呼ばれる
  • クラス内で定義された関数はメソッドと呼ばれる
  • メンバ変数とメソッドへのアクセスはメンバ演算子(.)を使う
    • 名前空間.メンバ変数名
    • 名前空間.メソッド名()

【クラス呼び出し箇所】

クラスを定義した行よりも、後ろの行にて呼び出す必要がある
クラスを定義した行よりも、前の行にて呼び出すとReferenceErrorとなる(変数と同じ)

後ろの行にて呼び出し

test.js
class Circle {

    static PI = 3.14;

    static perimeter(radius){
        return 2 * Circle.PI * radius;
    }

    static area(radius){
        return Circle.PI * radius * radius;
    }

}
console.log(Circle.perimeter(4));
//25.12

前の行にて呼び出し

test.js
console.log(Circle.perimeter(4));

class Circle {

    static PI = 3.14;

    static perimeter(radius){
        return 2 * Circle.PI * radius;
    }

    static area(radius){
        return Circle.PI * radius * radius;
    }

}
//ReferenceError: Cannot access 'Circle' before initialization

Discussion