JS Advanced

Дополнительный курс

Дополнительный курс для углубления: Proxy, генераторы, память, продвинутые темы

Дополнительный курс — не входит в основной путь · Продвинутый уровень

26 тем

  1. 01

    Строгий режим "use strict"

    Понять, что делает strict mode, какие ошибки он предотвращает, и почему в modern modules он уже включён по умолчанию.

  2. 02

    Именованные функциональные выражения (NFE)

    Понять разницу между function expression и named function expression, и зачем имя внутри функции полезно для рекурсии и stack traces.

  3. 03

    Преобразование объекта в примитив

    Понять, как объекты преобразуются в примитивы через Symbol.toPrimitive, valueOf и toString при операциях +, == и шаблонных строках.

  4. 04

    Symbol

    Понять, что Symbol — это уникальный примитив, как использовать well-known Symbols, и где они встречаются в реальном коде.

  5. 05

    WeakMap и WeakSet

    Понять разницу между Map/Set и WeakMap/WeakSet: слабые ссылки, сборка мусора, и почему перечисление содержимого невозможно.

  6. 06

    Прототипы: глубокое погружение

    Разобрать prototype chain, Object.create, делегирование и конструкторы на уровне, превышающем базовый обзор из Intermediate.

  7. 07

    Proxy и Reflect

    Понять, как Proxy перехватывает операции над объектами (get, set, has, apply) и как Reflect предоставляет стандартные операции.

  8. 08

    Генераторы и итераторы

    Понять, как function* создаёт генератор, как yield приостанавливает выполнение, и как генераторы связаны с итераторами и for...of.

  9. 09

    Асинхронные генераторы

    Понять, как async function* создаёт асинхронный генератор, и как for await...of перебирает асинхронные итераторы.

  10. 10

    Промисификация

    Научиться оборачивать callback-based API в Promises, понять, когда promisification нужна, и почему в modern code она встречается реже.

  11. 11

    Микрозадачи (Microtasks)

    Разобрать микрозадачи (Promise.then, queueMicrotask) и их приоритет над макрозадачами (setTimeout) в Event Loop.

  12. 12

    Конструктор и new

    Разобрать, что делает оператор new: создаёт объект, привязывает this, устанавливает prototype, и возвращает результат.

  13. 13

    Расширение встроенных классов

    Понять, как наследоваться от встроенных классов (Array, Map, Error), какие ограничения есть, и когда это оправдано.

  14. 14

    Миксины (Mixins)

    Понять, как миксины добавляют повторяемое поведение через композицию, и чем они отличаются от наследования.

  15. 15

    Дескрипторы свойств

    Понять, как свойства объекта определяются через writable, enumerable, configurable, value, get/set, и как это контролировать.

  16. 16

    Каррирование (Currying)

    Понять, как превратить f(a, b, c) в f(a)(b)(c), зачем это нужно, и когда каррирование уместно.

  17. 17

    Побитовые операторы

    Понять, как работают &, |, ^, ~, <<, >>, >>>, и где они реально используются в JavaScript.

  18. 18

    BigInt

    Понять, когда Number недостаточен, как работает BigInt, и почему нельзя смешивать BigInt и Number.

  19. 19

    Intl — интернационализация

    Понять, как использовать Intl.NumberFormat, Intl.DateTimeFormat и Intl.RelativeTimeFormat для локализации.

  20. 20

    WeakRef и FinalizationRegistry

    Понять, как WeakRef создаёт слабые ссылки на объекты и как FinalizationRegistry уведомляет об удалении. Почему GC timing недетерминирован.

  21. 21

    eval

    Понять, что eval выполняет строку как JavaScript, почему это опасно, и какие альтернативы существуют.

  22. 22

    new Function

    Понять, как new Function создаёт функции из строк, чем отличается от eval, и почему обычно избегается.

  23. 23

    Обёртки примитивов

    Понять, как JavaScript временно создаёт объекты-обёртки (String, Number, Boolean) для вызова методов примитивов.

  24. 24

    Сборка мусора (Garbage Collection)

    Понять, как JavaScript определяет unreachable объекты и удаляет их, и почему GC timing недетерминирован.

  25. 25

    Polyfills и транспиляция

    Различить polyfill (добавление недостающего API) и transpilation (преобразование нового синтаксиса в старый), и понять их роль в modern development.

  26. 26

    Автоматическое тестирование (Mocha)

    Понять основы тестирования: тест, assertion, test runner. Написать минимальный тест на Mocha.