JS Advanced
Дополнительный курсДополнительный курс для углубления: Proxy, генераторы, память, продвинутые темы
Дополнительный курс — не входит в основной путь · Продвинутый уровень
26 тем
- 01
Строгий режим "use strict"
Понять, что делает strict mode, какие ошибки он предотвращает, и почему в modern modules он уже включён по умолчанию.
- 02
Именованные функциональные выражения (NFE)
Понять разницу между function expression и named function expression, и зачем имя внутри функции полезно для рекурсии и stack traces.
- 03
Преобразование объекта в примитив
Понять, как объекты преобразуются в примитивы через Symbol.toPrimitive, valueOf и toString при операциях +, == и шаблонных строках.
- 04
Symbol
Понять, что Symbol — это уникальный примитив, как использовать well-known Symbols, и где они встречаются в реальном коде.
- 05
WeakMap и WeakSet
Понять разницу между Map/Set и WeakMap/WeakSet: слабые ссылки, сборка мусора, и почему перечисление содержимого невозможно.
- 06
Прототипы: глубокое погружение
Разобрать prototype chain, Object.create, делегирование и конструкторы на уровне, превышающем базовый обзор из Intermediate.
- 07
Proxy и Reflect
Понять, как Proxy перехватывает операции над объектами (get, set, has, apply) и как Reflect предоставляет стандартные операции.
- 08
Генераторы и итераторы
Понять, как function* создаёт генератор, как yield приостанавливает выполнение, и как генераторы связаны с итераторами и for...of.
- 09
Асинхронные генераторы
Понять, как async function* создаёт асинхронный генератор, и как for await...of перебирает асинхронные итераторы.
- 10
Промисификация
Научиться оборачивать callback-based API в Promises, понять, когда promisification нужна, и почему в modern code она встречается реже.
- 11
Микрозадачи (Microtasks)
Разобрать микрозадачи (Promise.then, queueMicrotask) и их приоритет над макрозадачами (setTimeout) в Event Loop.
- 12
Конструктор и new
Разобрать, что делает оператор new: создаёт объект, привязывает this, устанавливает prototype, и возвращает результат.
- 13
Расширение встроенных классов
Понять, как наследоваться от встроенных классов (Array, Map, Error), какие ограничения есть, и когда это оправдано.
- 14
Миксины (Mixins)
Понять, как миксины добавляют повторяемое поведение через композицию, и чем они отличаются от наследования.
- 15
Дескрипторы свойств
Понять, как свойства объекта определяются через writable, enumerable, configurable, value, get/set, и как это контролировать.
- 16
Каррирование (Currying)
Понять, как превратить f(a, b, c) в f(a)(b)(c), зачем это нужно, и когда каррирование уместно.
- 17
Побитовые операторы
Понять, как работают &, |, ^, ~, <<, >>, >>>, и где они реально используются в JavaScript.
- 18
BigInt
Понять, когда Number недостаточен, как работает BigInt, и почему нельзя смешивать BigInt и Number.
- 19
Intl — интернационализация
Понять, как использовать Intl.NumberFormat, Intl.DateTimeFormat и Intl.RelativeTimeFormat для локализации.
- 20
WeakRef и FinalizationRegistry
Понять, как WeakRef создаёт слабые ссылки на объекты и как FinalizationRegistry уведомляет об удалении. Почему GC timing недетерминирован.
- 21
eval
Понять, что eval выполняет строку как JavaScript, почему это опасно, и какие альтернативы существуют.
- 22
new Function
Понять, как new Function создаёт функции из строк, чем отличается от eval, и почему обычно избегается.
- 23
Обёртки примитивов
Понять, как JavaScript временно создаёт объекты-обёртки (String, Number, Boolean) для вызова методов примитивов.
- 24
Сборка мусора (Garbage Collection)
Понять, как JavaScript определяет unreachable объекты и удаляет их, и почему GC timing недетерминирован.
- 25
Polyfills и транспиляция
Различить polyfill (добавление недостающего API) и transpilation (преобразование нового синтаксиса в старый), и понять их роль в modern development.
- 26
Автоматическое тестирование (Mocha)
Понять основы тестирования: тест, assertion, test runner. Написать минимальный тест на Mocha.