class Singleton { constructor() { if (this.instance) { return this.instance; } this.value = Math.random(); this.instance = this; return this; } getValue() { return this.value; } }
this.instance is an instance property instead of a static property, causing it to be undefined every time a new instance is created, failing to enforce the singleton pattern.
To fix this, we should use a static property instead:
class Singleton { constructor() { if (Singleton.instance) { return Singleton.instance; } this.value = Math.random(); Singleton.instance = this; return this; } getValue() { return this.value; } }