- Типы данных в JavaScript (2 часа)
- Простые типы, объекты и массивы
- Приведение типов
- Виды доступа к полям объектов
- Особенности поведения массивов
- Концепция прототипа
- Итерация по внутренней структуре объекта
- Функциональные аспекты JavaScript (2 часа)
- Функциональные объекты
- Анонимные функции
- Замыкания и области видимости
- Способы вызова функций, поведение this
- Функциональное программирование (3 часа)
- Функции высшего порядка
- Чейнинг, карринг, мемоизация
- Отображение (map), свёртка (reduce), фильтрация
- Библиотека Underscore
- Объектно-ориентированное программированое (2 часа)
- Создание пространств имён (namespaces)
- Паттерн модуля
- Псевдоклассическое наследование
- Расширение объектов и стандартных типов
- Примеси
- Событийно-ориентированное программирование (3 часа)
- Функции обратного вызова (callbacks)
- Создание и обработка событий
- Продолжения (continuations)
- Асинхронное программирование
- Платформа Node.js
- Программирование DOM (4 часа)
- Библиотека jQuery
- Селекторы
- Атрибуты и стили
- Обход и манипуляция DOM
- Эффекты и анимация
- Обработка событий DOM
- Ajax, JSON, JSONP
- Подходы к созданию UI (2 часа)
- Организация кода (2 часа)
- AMD и RequireJS
- Модули CommonJS и Stitch
- Проверка качества кода (JSHint)
- Модульное тестирование (Mocha)
- Минификация кода (UglifyJS)
- JavaScript как промежуточный язык (2 часа)
- Развитие языка JavaScript: ES-Harmony
- Язык CoffeeScript
- Язык Dart