Показать сообщение отдельно
  #30 (permalink)  
Старый 20.11.2012, 15:11
Интересующийся
Отправить личное сообщение для Thekostya Посмотреть профиль Найти все сообщения от Thekostya
 
Регистрация: 19.05.2008
Сообщений: 10

Сообщение от deivan Посмотреть сообщение
благодарю, а могли бы пояснить логику этого процесса, так сказать, "на пальцах"?..
Если на пальцах то так:
Имеем твои условия:
var a = new Someting, b = new Someting;
 
Someting.prototype.my_name = 'Jack';
 
a === b && a.constructor === Someting && b.constructor === Someting && b.my_name == 'Jack'


Читаем описание === для сравнения объектов и отсюда делаем вывод что в результате a и b должны ссылаться на один объект. Нам нужен конструктор, который все время выдает один и тот же объект. Это и есть паттерн Singleton.

function Something() {
   if (!Something._inst)
      Something._inst=this;
   return Something._inst;
}


Как он работает - проверяем переменную "класса" _inst, если пустая, то значит это первый запуск конструктора, присваиваем ей текущий экземпляр this. Если она не пустая то уже хранит ранее созданный, который мы и возвращаем. Таким образом мы создаем 1 экземпляр и в дальнейшем возвращаем всегда его.
Ответить с цитированием