Этот паттерн не работает как синглтон, потому что он создает новый объект 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); // true 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); // true
console.log(o1.prop); // 's'
Теперь o и o1 ссылаются на один и тот же объект obj, и поэтому o === o1 возвращает true, и o1.prop возвращает 's'.