Сообщение от 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 экземпляр и в дальнейшем возвращаем всегда его.