@Rapen

Почему такой паттерн не корректен?

var obj = {};
  
var Singleton = function(){
 if(!obj) { 
var obj = {};
}
 
  return obj;
  
  }
  
var o  = new Singleton();
var o1 = new Singleton();

o.prop = 's'; 
console.log(o === o1);  //false
console.log(o1.prop); //undefined
  • Вопрос задан
  • 251 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Потому что объекты (o и o1) разные, внутри каждого свой obj.

Сама идея синглтона, что это один объект(типа) на всю программу.

function Singleton () {
    if (Singleton._instance) return Singleton._instance;
    Singleton._instance = this;
};

var o = new Singleton();
var o1 = new Singleton();
console.log(o === o1); // true

o.prop = 's';
console.log(o1.prop); // s
Ответ написан
miraage
@miraage
Старый прогер
<сарказм>Потому, что синглтон - антипаттерн.</сарказм>

А вообще, почитайте вот что:
- функции-конструкторы
- hoisting
Ответ написан
Комментировать
T_y_l_e_r
@T_y_l_e_r
Синглтон возвращает всегда только 1 обьект а не создает новый.
У вас при каждом new генерируется новый обьект
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы