Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тестовое задание Yandex (https://javascript.ru/forum/offtopic/18474-testovoe-zadanie-yandex.html)

B@rmaley.e><e 04.07.2011 21:38

Цитата:

Сообщение от melky
WTF is that ?!

ES6
Видимо, у Вас FF, ибо ни в опере, ни в хроме такое еще не реализовано.

melky 04.07.2011 22:35

благодарю :)

я знал, что это "когда-нибудь" будет реализовано

но не так же быстро

..

уже читаю статью на MDN и невольно хочется чесать репу и представлять, во что превратится JavaScript в ближайшее будущее

Gozar 04.07.2011 23:36

Цитата:

Сообщение от melky (Сообщение 111784)
во что превратится JavaScript в ближайшее будущее

Ни во что, пока не умрут IE6, IE7, IE8, а я до этого момента успею состариться :'(

Как ни печально, но IE6 is alive.

float 04.07.2011 23:44

И слава богу:) . Лично мене, нововведения не нравятся....
хотя это наверное тока первое впечатление...

Sweet 05.07.2011 00:09

Цитата:

Сообщение от float
Лично мене, нововведения не нравятся....

Цитата:

Первая стадия — отрицание.
:D

B~Vladi 05.07.2011 00:28

Да я тоже не в восторге.

melky 05.07.2011 10:33

Цитата:

Сообщение от float (Сообщение 111789)
И слава богу:) . Лично мене, нововведения не нравятся....
хотя это наверное тока первое впечатление...

а мне нравятся, но некоторые :)

после C# эти лямбда выражения.. м-м, просто сахар.

или генераторы массивов, или <то, что я еще не понял,как говорить>(пример кода выше)..

Цитата:

Сообщение от Gozar (Сообщение 111786)
Ни во что, пока не умрут IE6, IE7, IE8, а я до этого момента успею состариться :'(

обожди, еще XP не умерла :(
через 20 лет, я думаю,всё это закончится. то тогда уже роль старухи будет играть win7. печально, однако.

получается, web-девелоперам головная боль от продуктов MS на всю жизнь :(

B~Vladi 05.07.2011 11:13

Цитата:

Сообщение от melky
получается, web-девелоперам головная боль от продуктов MS на всю жизнь

У меня ничего не болит, что я делаю не так?

monolithed 05.07.2011 12:09

Цитата:

Сообщение от float
И слава богу . Лично мене, нововведения не нравятся....

Никто не заставляет вас использовать новый синтаксис. Brendan Eich сказал, что в ближайшее будущем эта совместимость сохранится.

Цитата:

Сообщение от B~Vladi
Да я тоже не в восторге.

Ну так давайте откатимся до спецификации 96 г ;) или я не так недовольных нововведенями?

Цитата:

Сообщение от melky
через 20 лет, я думаю,всё это закончится. то тогда уже роль старухи будет играть win7. печально, однако.

Пока разработчики браузеров что-то не изменят, это котовася еще долго будет.
Считаю, что браузер при включении должен обращаться к неким репозиториям для загрузки последних спецификаций.

B~Vladi 05.07.2011 12:39

Цитата:

Сообщение от monolithed
Ну так давайте откатимся до спецификации 96 г

Я не говорю что мне не нравятся нововведения в принципе. Я конкретно про эти. Не все, сейчас и не вспомню конкретный пример.

B~Vladi 05.07.2011 13:57

А, ну например bind. С первого взгляда удобная штука. Но, насколько я понял, этот метод добавляет ещё больше путаницы.
Поправьте, если я ошибаюсь. Это новый метод функции. Его можно вызвать и после определения, где-нибудь в другой части кода. И не один раз, т.е. переопределить. Тогда как вообще потом искать, откуда берётся именно этот this. Либо это контекст, либо "забинденый" - непонятно. А если забинденый, то где и когда? Контекст то хоть можно отловить, если пройтись по стеку вызовов.
Про наполнителя массива вообще молчу.

PS: это задание они уже не первый год рассылают.

melky 05.07.2011 14:05

Цитата:

Сообщение от monolithed (Сообщение 111836)
Считаю, что браузер при включении должен обращаться к неким репозиториям для загрузки последних спецификаций.

обновление же :)

если бы убрали возможность контролировать проверку обновлений через гуй ( а через конфиг можно.. таким образом отсеятся те, кому "по приколу" оставлять старый браузер)

monolithed 05.07.2011 14:42

Цитата:

Сообщение от B~Vladi
PS: это задание они уже не первый год рассылают.

ну, задания явно не для новичков рассчитаны, особенно с этой страницы.

melky 05.07.2011 15:34

задание

Цитата:

Что такое замыкание в JavaScript?
Problems, developer ?

float 05.07.2011 16:15

Цитата:

Никто не заставляет вас использовать новый синтаксис.
Если на работе будет хоть один, кто юзает новый синтаксис - придётся...

Илья Кантор 05.07.2011 17:00

/me с радостью убедился, что большинство вопросов из топика и вакансий яндекса отвечены в курсах по javascript

Илья Кантор 05.07.2011 18:22

P.S. А ниче если мы тут варианты решений пообсуждаем яндекса?

Например, вопросы 2 и 4 отсюда http://company.yandex.ru/job/vacanci...xml?ncrnd=2215

На ум сразу приходит фича new, когда оно возвращает объект из return.
Ну, то есть для вопроса 4 это будет
function MyClass() {
  return window
}
А для вопроса 2 - будет
function f(a) {
    var b = new function() { return a }
    return b;
}
Это так и имелось в виду?
Решение какое-то ну никак не жизненное... (как впрочем и сам таск)

Илья Кантор 05.07.2011 18:34

P.S. Смотрю еще задания яндекса.. например http://company.yandex.ru/job/vacanci...xml?ncrnd=2215, вопрос 3.
var Foo = function (value) {
    return { ... }
};

function test() {    
    var x = new Foo(5);
..
Это такой яндекс-стиль, что ли - вызывать через new функции, возвращающие объекты? :) Коляй, поясни?

B~Vladi 05.07.2011 18:43

Эмм, для второго будет так:
function FooClass(){}
var a = new FooClass(); // имя FooClass может быть любым, заранее неизвестно
function f(a) {
    var b = new a.constructor;
    return b;
}
var b = f(a);
alert(b instanceof FooClass);


... ну если не будет такого кода:
FooClass.prototype = {};

monolithed 05.07.2011 18:57

Цитата:

Сообщение от Илья Кантор
Ну, то есть для вопроса 4 это будет

мне кажется так корректней))
function MyClass() {
     return this.constructor ? this.constructor : arguments.callee;
}
var a = new MyClass,
b = new MyClass;
alert(a === b); // true

B~Vladi 05.07.2011 19:00

Цитата:

Сообщение от monolithed
мне кажется так корректней))

Да любой объект (один) можно вернуть, тут главное понимать, что return не срабатывает в холостую при new.

monolithed 05.07.2011 19:01

Цитата:

Сообщение от Илья Кантор
Это такой яндекс-стиль, что ли - вызывать через new функции, возвращающие объекты?

видать просто хотели запутать ))

B@rmaley.e><e 05.07.2011 19:05

Цитата:

Сообщение от Илья Кантор
Например, вопросы 2 и 4 отсюда http://company.yandex.ru/job/vacanci...dia_search.xml

Яндекс меняет вопросы, или меня глючит, т.к. вторым вопросом у меня значится
var car = {
   color: 'red',
   getColor: function() {
      alert(this.color);
   }
};
 
car.getColor();
var getColor = car.getColor;
getColor();
?

monolithed 05.07.2011 19:06

Цитата:

Сообщение от B~Vladi
Да любой объект можно вернуть

так не отработает:
function MyClass() {
    return window;
}
var a = new MyClass,
*!*b = MyClass;*/!*
alert(a === b); // true


Цитата:

Сообщение от B@rmaley.e><e
Яндекс меняет вопросы, или меня глючит, т.к. вторым вопросом у меня значится

Илья ссылки перепутал))

Цитата:

Сообщение от B~Vladi
Эмм, для второго будет так:

В задании сказано дописать функцию f()
Если честно я по этим вопросам еще полгода назад прошелся (вроде бы все, что были), вот только со вторым так и не понял они случайно упустили конструктор (иначе ну слишком просто, не на внимательность же задачка)?

Цитата:

Сообщение от Илья Кантор
А для вопроса 2 - будет
function f(a) {
     var b = new function() { return a }
     return b;
}

Это так и имелось в виду?

А смысл возвращать фабрику? ))

Kolyaj 05.07.2011 20:17

Цитата:

Сообщение от Илья Кантор
Это такой яндекс-стиль, что ли - вызывать через new функции, возвращающие объекты? Коляй, поясни?

Я эти вопросы не придумывал, но именно этот мне нравится. В нескольких строках втиснуто много страниц теории.

B~Vladi 05.07.2011 20:44

Цитата:

Сообщение от monolithed
так не отработает:

Ну конечно не будет работать, функция же не вызывается. И этот кусок кода нельзя трогать, только написать конструктор MyClass.
Цитата:

Сообщение от monolithed
В задании сказано дописать функцию f()

А я её и дописывал. Определения конструктора у них нет, я для теста в консоли дописал, ничего страшного?

monolithed 05.07.2011 21:47

Цитата:

Сообщение от B~Vladi
Ну конечно не будет работать, функция же не вызывается. И этот кусок кода нельзя трогать, только написать конструктор MyClass.

В конкретном случае, условие задания выполняется, но если бы требовалось так new Foo === Foo, то вернуть window не прокатило бы. Поэтому лучше перестраховаться и написать универсальный вариант))

Не подумай только, что я придираюсь, вдруг кому на собеседовании попадется :D

Илья Кантор 06.07.2011 12:46

Как вам такая задачка на основе решения B~Vladi?

Есть код
var obj = new Foo();  // Foo is an arbitrary function
Требуется создать объект c тем же конструктором, что и obj.

Будет ли работать следующий код?
Если да, то будет ли он работать при любых Foo или только для некоторых?
var obj2 = new obj.constructor;

Илья Кантор 06.07.2011 13:01

Ну и вдогонку...
For an arbitrary document, we do the following:
var aList1 = document.getElementsByTagName('a'),
var aList2 = document.querySelectorAll('a');

document.body.appendChild(document.createElement('a'));

alert(aList2.length - aList1.length);
What will be the output? Why?

B~Vladi 06.07.2011 13:37

Цитата:

Сообщение от Илья Кантор
Будет ли работать следующий код?
Если да, то будет ли он работать при любых Foo или только для некоторых?

Будет.
Не будет, если Foo !== Object и перед созданием obj2, не был изменён оригинальный прототип Foo.

Цитата:

Сообщение от Илья Кантор
Ну и вдогонку...

Output: -1.
Потому что getElementsByTagName - живая коллекция, querySelectorAll - нет.

monolithed 06.07.2011 13:39

Цитата:

Сообщение от Илья Кантор
What will be the output? Why?

document.querySelectorAll() возвращает Static NodeList, а, document.getElementsByTagName() - Dynamic NodeList

Илья Кантор 06.07.2011 15:46

Ну ладно, раз возражений нет - добавлю эту пару задач в учебник ;)


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