Марейн Хавербек
Выразительный JavaScript
Содержание
Введение
О программировании
***
Почему язык имеет значение
Что такое JavaScript?
Код, и что с ним делать
1. Величины, типы и операторы
***
Величины
Числа
Строки
Унарные операторы
Булевские величины
Неопределённые значения
Автоматическое преобразование типов
Итог
2. Структура программ
***
Выражения и инструкции
Переменные
Ключевые и зарезервированные слова
Окружение
Функции
Функция console.log
Возвращаемые значения
prompt и confirm
Управление порядком выполнения программы
Условное выполнение
Циклы while и do
Отступы в коде
Циклы for
Выход из цикла
Короткое обновление переменных
Работаем с переменными при помощи switch
Регистр имён
Комментарии
Итог
Упражнения
3. Функции
***
Определение функции
Параметры и область видимости
Вложенные области видимости
Функции как значения
Объявление функций
Стек вызовов
Необязательные аргументы
Замыкания
Рекурсия
Выращиваем функции
Функции и побочные эффекты
Итог
Упражнения
4. Структуры данных: объекты и массивы
***
Белка-оборотень
Наборы данных
Свойства
Методы
Объекты
Изменчивость (Mutability)
Журнал оборотня
Вычисляем корреляцию
Объекты как карты (map)
Итоговый анализ
Дальнейшая массивология
Строки и их свойства
Объект arguments
Объект Math
Объект global
Итог
Упражнения
5. Функции высшего порядка
***
Абстракции
Абстрагируем обход массива
Функции высшего порядка
Передача аргументов
JSON
Фильтруем массив
Преобразования при помощи map
Суммирование при помощи reduce
Компонуемость
Цена
Пра-пра-пра-пра-пра-…
Связывание
Итог
Упражнения
6. Тайная жизнь объектов
***
История
Методы
Прототипы
Конструкторы
Перегрузка унаследованных свойств
Нежелательное взаимодействие прототипов
Объекты без прототипов
Полиморфизм
Форматируем таблицу
Геттеры и сеттеры
Наследование
Оператор instanceof
Итог
Упражнения
7. Проект: электронная жизнь
***
Определение
Изображаем пространство
Программный интерфейс существ
Мировой объект
this и его область видимости
Оживляем мир
Оно двигается
Больше форм жизни
Более жизненная ситуация
Обработчики действий
Населяем мир
Вдохнём жизнь
Упражнения
8. Поиск и обработка ошибок
***
Ошибки программистов
Строгий режим (strict mode)
Тестирование
Отладка (debugging)
Распространение ошибок
Исключения
Подчищаем за исключениями
Выборочный отлов исключений
Утверждения (Assertions)
Итог
Упражнения
9. Регулярные выражения
***
Создаём регулярное выражение
Проверяем на совпадения
Ищем набор символов
Повторяем части шаблона
Группировка подвыражений
Совпадения и группы
Тип даты
Границы слова и строки
Шаблоны с выбором
Механизм поиска
Откаты
Метод replace
Жадность
Динамическое создание объектов RegExp
Метод search
Свойство lastIndex
Циклы по вхождениям
Разбор INI файлы
Международные символы
Итог
Упражнения
10. Модули
***
Зачем нужны модули
Использование функций в качестве пространств имён
Объекты в качестве интерфейсов
Отсоединяемся от глобальной области видимости
Выполняем данные как код
Require
Медленная загрузка модулей
Разработка интерфейса
Итог
Упражнения
11. Проект: язык программирования
***
Разбор (parsing)
Интерпретатор
Специальные формы
Окружение
Функции
Компиляция
Мошенничество
Упражнения
12. JavaScript и браузер
***
Сети и интернет
Веб
HTML
HTML и JavaScript
Песочница
Совместимость и браузерные войны
13. Document Object Model
***
Деревья
Стандарт
Обход дерева
Поиск элементов
Меняем документ
Создание узлов
Атрибуты
Расположение элементов (layout)
Стили
Каскадные стили
Селекторы запросов
Расположение и анимация
Итог
Упражнения
14. Обработка событий
***
Обработчики событий
События и узлы DOM
Объекты событий
Распространение (propagation)
Действия по умолчанию
События от кнопок клавиатуры
Кнопки мыши
Движение мыши
События прокрутки
События, связанные с фокусом
Событие загрузки
График выполнения скрипта
Установка таймеров
Устранение помех (debouncing)
Итог
Упражнения
15. Проект: игра-платформер
***
Игра
Технология
Уровни
Чтение уровня
Действующие лица (актёры)
Бремя инкапсуляции
Рисование
Движение и столкновение
Актёры и действия
Отслеживание клавиш
Запуск игры
Упражнения
16. Рисование на холсте
***
SVG
Элемент холста canvas
Заливка и обводка
Пути
Кривые
Рисуем круговую диаграмму
Текст
Изображения
Преобразования
Хранение и очистка преобразований
Назад к игре
Выбор графического интерфейса
Итог
Упражнения
17. HTTP
***
Протокол
Браузер и HTTP
XMLHttpRequest
Отправка запроса
Асинхронные запросы
Получение данных XML
Песочница для HTTP
Абстрагируем запросы
Обещания
Цените HTTP
Безопасность и HTTPS
Итог
Упражнения
18. Формы и поля форм
***
Поля
Фокус
Отключённые поля
Форма в целом
Текстовые поля
Галочки и радиокнопки
Поля select
Файловое поле
Хранение данных на стороне клиента
Итог
Упражнения
19. Проект: Paint
***
Простая программа рисования
Реализация
Строим DOM
Основание
Выбор инструмента
Цвет и размер кисти
Сохранение
Загрузка картинок
Закругляемся
Упражнения
20. Node.js
***
Вступление
Асинхронность
Команда node
Модули
Установка через NPM
Модуль file system
Модуль HTTP
Потоки
Простой файловый сервер
Обработка ошибок
Итог
Упражнения
21. Проект: веб-сайт по обмену опытом
***
Встречи моноциклистов
Дизайн
Длинные запросы
Интерфейс HTTP
Сервер
Клиент
Упражнения
Выразительный JavaScript