Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Вопросы на собеседованиях (https://javascript.ru/forum/offtopic/31131-voprosy-na-sobesedovaniyakh.html)

Tim 20.11.2012 13:36

Цитата:

Про ООП мне как минимум хочется услышать про классы
мне тоже хочется услышать про классы в JS ООП.

Цитата:

Тебе про что написать, просто мне влом про это все писать.
вот про это можешь написать

Thekostya 20.11.2012 14:21

Не надо тут устраивать подколы.
Вопрос звучал "Что такое ООП?". Я уже писал что хочу проверить знание принцыпов, а уже как тот или иной язык выкручивается и реализует ооп, это уже другой вопрос.
В perl 5 например тоже родного ООП нет, но принципы то применяют.

deivan 20.11.2012 14:26

мне как-то дали в качестве теста вот это, до сих пор в замешательстве, что это:

Цитата:

Напишите код, который реализует следующее поведение:
var a = new Someting, b = new Someting;

Someting.prototype.my_name = 'Jack';

a === b && a.constructor === Someting && b.constructor === Someting && b.my_name == 'Jack'


Thekostya 20.11.2012 14:26

Цитата:

Сообщение от Tim (Сообщение 216870)
мне тоже хочется услышать про классы в JS ООП.


вот про это можешь написать


Можешь покритиковать статью на этом сайте, там тоже про классы пишут.

Наследование на классах

Thekostya 20.11.2012 14:33

Deivan, помоему под такие условия подходит Синглетон.

Shaci 20.11.2012 14:34

Цитата:

Сообщение от Thekostya (Сообщение 216881)
Можешь покритиковать статью на этом сайте, там тоже про классы пишут.

Наследование на классах

слово классы всегда в кавычках, в данном случае их просто не поставили;)

Thekostya 20.11.2012 14:42

Цитата:

Сообщение от deivan (Сообщение 216880)
мне как-то дали в качестве теста вот это, до сих пор в замешательстве, что это:

Как то так
function Something() {
   if (!Something._inst)
      Something._inst=this;
   return Something._inst;
}


И Someting исправлено на Something

Thekostya 20.11.2012 14:43

Цитата:

Сообщение от Shaci (Сообщение 216885)
слово классы всегда в кавычках, в данном случае их просто не поставили;)

Ну я то не критикую, это меня покритиковали. :0)

deivan 20.11.2012 14:49

Цитата:

Сообщение от Thekostya (Сообщение 216888)
Как то так
function Something() {
   if (!Something._inst)
      Something._inst=this;
   return Something._inst;
}

И Someting исправлено на Something

благодарю, а могли бы пояснить логику этого процесса, так сказать, "на пальцах"?..

Thekostya 20.11.2012 15:11

Цитата:

Сообщение от deivan (Сообщение 216892)
благодарю, а могли бы пояснить логику этого процесса, так сказать, "на пальцах"?..

Если на пальцах то так:
Имеем твои условия:
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 экземпляр и в дальнейшем возвращаем всегда его.


Часовой пояс GMT +3, время: 09:16.