JavaScript アドバンス

JS スタティックメソッド

1. スタティックメソッドの基本

スタティッククラスメソッド(Static class methods)は、クラス自体に対して定義されるメソッドです。

スタティックメソッドをオブジェクト(インスタンス)から呼び出すことはできません。呼び出しはクラスからのみ可能です。

class Car {
  constructor(name) {
    this.name = name;
  }
  static hello() {
    return "こんにちは!!";
  }
}

const myCar = new Car("Ford");

// hello() は Car クラスから呼び出すことができます:
document.getElementById("demo").innerHTML = Car.hello();

// しかし、Car オブジェクト(インスタンス)からは呼び出せません:
// document.getElementById("demo").innerHTML = myCar.hello();
// これを実行するとエラーが発生します。

2. スタティックメソッドへのオブジェクトの受け渡し

スタティックメソッドの内部で myCar オブジェクトの情報を使用したい場合は、そのオブジェクトを引数(パラメータ)として渡すことができます。

class Car {
  constructor(name) {
    this.name = name;
  }
  static hello(x) {
    return "こんにちは " + x.name;
  }
}

const myCar = new Car("Ford");

// myCar オブジェクトをスタティックメソッドに渡して呼び出します
document.getElementById("demo").innerHTML = Car.hello(myCar);