【javascript】静的な私

最近人様の書いたコードのクラスで、 I というスタティックなメンバを見かけました。

どうやらインスタンスをクラスのスタティック・メンバに登録することで、変数というクビキから開放するというアクロバティックなテクニックのようです。

class Person {
  static I
  constructor(name) {
    Person.I = this
    this.myname = name
  }
  myNameIs() {
    console.log("My name is " + this.myname + ".")
  }
}
new Person("Bob")
Person.I.myNameIs()
// My name is Bob. と出力

プログラム中において一意になることが保証されているモノに対しては、結構有効な手なのだと思います。私もゲーム作ってる時、Aの情報をBにわたす際にいちいち親を経由してやらなければいけないことに多少なりともストレスを感じていましたから。

でもこれ、

new Person("Bob")
new Person("Jon")
Person.I.myNameIs()
// My name is Jon. と出力

とやってしまった時の"Bob"はどこ行ってしまうんでしょうね? そのうちガベージコレクションが消してくれるのかな?




この記事が気に入ったらサポートをしてみませんか?