2
class Thing {
  constructor(parameter) {
    if (parameter) {
      this.x = parameter;
    }
    return this;
  }

  getX () {
    return this.x;
  }

  static specialThing() {
    return new Thing('Special Thing');
  }
}

let thingy = Thing.specialThing();
thingy.getX(); // 'Special Thing'

上記を JavaScript で実行したいと思います (より複雑な形式ではありますが)。このコードを実行すると、現在問題なく動作しますが、クラス内の関数がそのクラスのインスタンス化されたバージョンを返すのは奇妙に感じます。この方法でコードをビルドしない理由はありますか?

静的メソッドに代わる機能は次のとおりです。

Thing.specialThing = () => {
  return new Thing('Special Thing');
};

これらのいずれかを使用することのプラスとマイナス(ある場合)は何ですか? 私が気付いていないこの目標を達成するための他のより良い方法はありますか?

4

2 に答える 2