Roadmap по learn.javascript.ru (Часть 1)
Главы 1, 2
Сколько типов данных в JS?
Что возвращают и как работают операторы?
> >= >= < <= == === && || ! !!
Как работают сравнения на разных типах?
Сравнения между undefined, null, NaN
Почему switch не называется циклом?
Что такое функция?
Глава 3
Воспользоваться debugger и отладчиком Chrome
Добавить ошибку в код и найти ее при отладке
Воспользоваться debugger в IDE в node.js
Задачи по Git #1, #2
DL 2 недели на 2 задачи
Глава 4
Что такое this?
Как "потерять" this?
Как "не терять" this?
Чему равен this в свойствах объекта?
Чему равен this в геттерах/сеттерах объекта?
Чему равен this внутри функции-стрелки?
Как сделать, чтобы объект:
был равен определенному числу?
был равен определенной строке?
obj > 0 // true. Как это сделать?
String(obj < 0) + String(obj < 0) // "truefalse". Как это сделать?
Главы 5, 6
Как работают вызовы методов у примитивов?
Как можно классифицировать методы массивов?
Чем отличается Map от объекта?
Чем отличается WeakMap от Map?
Что такое замыкание?
На чем и когда замыкается функция?
Что такое рекурсия?
Как можно оптимизировать рекурсию?
Что такое синхронный и асинхронный код?
Задачи на методы массивов + рекурсию
Задача по Git #3
DL 2 недели на задачи
оптимизировать функцию getStringCount из задачи, чтобы результат кешировался в WeakMap
Глава 7
Чем отличается геттер от свойства?
Как можно классифицировать дескрипторы?
Какие дескрипторы можно использовать вместе?
Какие дескрипторы нельзя использовать вместе?
Можно ли использовать this в геттере?
Можно ли использовать this в свойстве?
Можно ли использовать this в дескрипторе геттера?
Написать софт на чайник на ООП
Или другую технику
Простое: Телевизор, Бритва и т.д.
(для разогрева)Сложнее: чайник, увлажнитель, кулер
(setInterval, датчики)О_о: пылесос, бойлер, мультиварка
(больше датчиков и асинхронщины)
Глава 8
Как осуществить прототипное наследование?
Как осуществить наследование свойства в this?
Как создать объект без прототипа?
Как изменить прототип у созданного объекта?
Как получить прототип у объекта/числа/строки/функции?
Реализовать forEach/map/reduce на прототипах
Реализовать bind/call/apply на прототипах
Глава 9
Что значит "синтаксический сахар"?
Классы это синтаксический сахар?
Сахар над чем? Привести аналогии по синтаксисуКакие есть виды полей в классах?
Какие поля пишутся в прототип, а какие в инстанс?
Можно ли обратиться к статическому полю из this?
Можно ли переопределить метод в дочернем классе?
Можно ли переопределить метод в инстансе класса?
Реализовать сериализатор абстрактного инстанса класса
Глава 10
Что будет с кодом ниже после throw?
Что будет с кодом второго setTimeout после throw в первом?
Что будет с кодом ниже, если код выше обернут в try..catch и делает throw?
Что технически возможно throw'ить?
Можно ли сделать блок try без catch?
Можно ли сделать блок try..finally без catch?
Зачем нужна обработка ошибок? Используется ли она на проде?
Глава 11
Что такое колбек?
Что такое промисы? Чем они отличаются от колбеков?
Зачем нужны промисы?
Являются ли аргументы then колбеками?
Является ли промис синтаксическим сахаром и над чем?
Метод then() возвращает новый промис?
Что будет, если на завершенный промис добавить .then()?
Что такое микро и макро задачи? Примеры
Что мы можем промисифицировать? Есть ли ограничения?
Выполнится ли then после catch, если промис над catch:
1. реджетится 2. ресолвится?Выполнится ли then перед catch, если промис над then:
1. реджетится 2. ресолвится?
Реализовать класс MyPromise
Глава 12
Кто такое генераторы?
Зачем нужны генераторы?
Является ли async/await синтаксическим сахаром и над чем?
Что первично, промисы или async/await или они не соприкасаются?
Что первично, генераторы или async/await или они не соприкасаются?
Можно ли реализовать логику await на генераторах?
Реализовать await в виде функции, принимающей генератор
Главы 13, 14
Примените модули на практике:
подключите файл как модуль и используйте в нем импорт
динамически импортируйте другой модуль, и воспользуйтесь имПримените Proxy на практике:
создайте ловушку, которая делает доп. действия при записи и чтении
создайте ловушку, которая пересчитывает полное имя при изменении фамилии или имени
почитайте про фреймворк Vue и как реализована его реактивность в версиях 2 и 3Примените eval на практике:
выполните код в eval, взяв его из prompt в браузереКак работает побитовое И, ИЛИ, НЕ?
Что делает с числом побитовое НЕ?