シングルループモード
プロセス運転中に一輪運転
1つのオブジェクトのみを生成するモードを強制
まず静的変数instanceを宣言します.
let s1 = new Singleton();でSingletonオブジェクトを作成しました.
コンストラクション関数が実行されます.
Singleton.インスタンスがnullを指すためです.
Singleton.instance = this;実行時
instanceはthis、すなわちSingletonオブジェクトを指します.
後でnew Singleton()を再利用しても
Singleton.インスタンスはnullではないため、既存のオブジェクトを指します.
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ではないため、既存のオブジェクトを指します.
Reference
この問題について(シングルループモード), 我々は、より多くの情報をここで見つけました https://velog.io/@dik654/싱글턴-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol