シングルループモード


プロセス運転中に一輪運転
1つのオブジェクトのみを生成するモードを強制
class Singleton
{
  static instance;
  constructor()
  {
    if (!Singleton.instance)
    {
        Singleton.instance = this;
    }
    return Singleton.instance;
  }
}


let s1 = new Singleton();
let s2 = new Singleton();

if (s1 === s2)
{
  console.log('they are same, Singleton!');
}
else
{
  console.log('they are not same');
}
上のコードがメモリで実行されているのを見たら

まず静的変数instanceを宣言します.
let s1 = new Singleton();でSingletonオブジェクトを作成しました.
コンストラクション関数が実行されます.

Singleton.インスタンスがnullを指すためです.
Singleton.instance = this;実行時
instanceはthis、すなわちSingletonオブジェクトを指します.
後でnew Singleton()を再利用しても
Singleton.インスタンスはnullではないため、既存のオブジェクトを指します.