Javascript.RU

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

И вообще нефиг ко мне придираться я не JS программер, просто мимо проходил посмотреть вопросы на собеседование, т.к. скоро придет пара кандидатов. :о)
Ответить с цитированием
  #32 (permalink)  
Старый 20.11.2012, 15:37
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Thekostya
нефиг ко мне придираться
Я не придирался. Считаю правильным публиковать к вопросам - ответы. Иначе эта тема превратиться в мусор.

А так и для обучающихся полезно и себе разминка.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #33 (permalink)  
Старый 20.11.2012, 18:22
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
И вообще нефиг ко мне придираться я не JS программер
если бы сразу об этом узнать то и придирок бы не было
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
Ответить с цитированием
  #34 (permalink)  
Старый 21.11.2012, 06:57
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Сообщение от 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
Ответить с цитированием
  #35 (permalink)  
Старый 21.11.2012, 10:21
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Aetae
Это конечно мило, но только a всё равно никогда не будет === b, ибо new - это таки new.
будет. сли в рез-те вызова с new возвращается другой объект, то он будет использоваться вместо новосозданного
Ответить с цитированием
  #36 (permalink)  
Старый 21.11.2012, 17:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Сообщение от melky Посмотреть сообщение
будет. сли в рез-те вызова с new возвращается другой объект, то он будет использоваться вместо новосозданного
Show me your moves!©
__________________
29375, 35
Ответить с цитированием
  #37 (permalink)  
Старый 21.11.2012, 18:08
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Aetae Посмотреть сообщение
Show me your moves!©
function A () {

    var created = this;

    A = function () {
        return created;
    };

}


a = new A();
b = new A();

alert( a === b );
Ответить с цитированием
  #38 (permalink)  
Старый 22.11.2012, 13:12
Интересующийся
Отправить личное сообщение для Thekostya Посмотреть профиль Найти все сообщения от Thekostya
 
Регистрация: 19.05.2008
Сообщений: 10

Сообщение от Aetae Посмотреть сообщение
Это конечно мило, но только a всё равно никогда не будет === b, ибо new - это таки new.
В этом и есть фишка синглетона, и а и б при этом будут ссылками на один и тот же объект.
Ответить с цитированием
  #39 (permalink)  
Старый 22.11.2012, 23:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Aetae
Это конечно мило, но только a всё равно никогда не будет === b, ибо new - это таки new.

var Foo = function() {
   return this.constructor; // или Foo, встроенные конструкторы (Array, Date...) и т.д.
};

var a = new Foo;
var b = new Foo;

alert(a === b);

Последний раз редактировалось monolithed, 22.11.2012 в 23:45.
Ответить с цитированием
  #40 (permalink)  
Старый 22.11.2012, 23:39
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от monolithed
// или Foo, встроенные объекты (Array, Date...) и т.д.
DOM ...
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопросы по TreeView posta ExtJS 4 18.03.2011 12:52
Форум: помечать "закрытые" вопросы. Jurasmi Сайт Javascript.ru 27 11.12.2010 19:53
AJAX для ЧАЙНИКОВ (вопросы) sc2r2bey AJAX и COMET 16 10.07.2009 21:23