Показать сообщение отдельно
  #34 (permalink)  
Старый 21.11.2012, 06:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Сообщение от Thekostya Посмотреть сообщение
Если на пальцах то так:
Имеем твои условия:
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 экземпляр и в дальнейшем возвращаем всегда его.
Это конечно мило, но только a всё равно никогда не будет === b, ибо new - это таки new.
__________________
29375, 35
Ответить с цитированием