Этот паттерн не работает как синглтон, потому что он создает новый объект obj при каждом вызове конструктора Singleton. В результате у вас создаются два разных объекта obj для o и o1, поэтому o === o1 возвращает false.
Чтобы исправить это, вам нужно удалить объявление var obj = {}; внутри конструктора Singleton, чтобы не создавать новый объект при каждом вызове. Вместо этого вы можете просто возвращать уже существующий объект obj, если он уже был создан.
Вот исправленный пример:
var obj = {} var Singleton = function() return obj
var o = new Singleton() var o1 = new Singleton() o.prop = 's' console.log(o === o1); // tru console.log(o1.prop); // 's'
Теперь o и o1 ссылаются на один и тот же объект obj, и поэтому o === o1 возвращает true, и o1.prop возвращает 's'.
Этот паттерн не работает как синглтон, потому что он создает новый объект obj при каждом вызове конструктора Singleton. В результате у вас создаются два разных объекта obj для o и o1, поэтому o === o1 возвращает false.
Чтобы исправить это, вам нужно удалить объявление var obj = {}; внутри конструктора Singleton, чтобы не создавать новый объект при каждом вызове. Вместо этого вы можете просто возвращать уже существующий объект obj, если он уже был создан.
Вот исправленный пример:
var obj = {}var Singleton = function()
return obj
var o = new Singleton()
var o1 = new Singleton()
o.prop = 's'
console.log(o === o1); // tru
console.log(o1.prop); // 's'
Теперь o и o1 ссылаются на один и тот же объект obj, и поэтому o === o1 возвращает true, и o1.prop возвращает 's'.