Марейн Хавербеке
Выразительный JavaScript. Современное веб-программирование. 3-е издание
Переводчик Е. Сандицкая (Полонская)
Технический редактор Е. Рафалюк-Бузовская
Литературный редактор Е. Рафалюк-Бузовская
Художники Н. Гринчик, В. Мостипан
Корректоры О. Андриевич, Н. Гринчик, Е. Павлович
Верстка К. Подольцева-Шабович
Марейн Хавербеке
Выразительный JavaScript. Современное веб-программирование. 3-е издание . — СПб.: Питер, 2021.
ISBN 978-5-4461-1226-5
© ООО Издательство "Питер", 2021
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Оглавление
Введение
О программировании
Почему так важен язык программирования
Что такое JavaScript
Код и что с ним делать
Обзор этой книги
Условные обозначения
1. Значения, типы и операторы
Значения
Числа
Арифметика
Специальные числа
Строки
Унарные операции
Логические значения
Пустые значения
Автоматическое преобразование типов
Упрощенное вычисление логических операторов
Резюме
2. Структура программы
Выражения и инструкции
Привязки
Имена привязок
Окружение
Функции
Функция console.log
Возвращение значений
Последовательность выполнения
Условное выполнение
Циклы while и do
Код с отступами
Циклы for
Принудительный выход из цикла
Быстрое обновление привязок
Диспетчеризация по значению с помощью switch
Использование прописных букв
Комментарии
Резюме
Упражнения
3. Функции
Определение функции
Привязки и области видимости
Вложенные области видимости
Функции как значения
Декларативная запись
Стрелочные функции
Стек вызовов
Необязательные аргументы
Замыкание
Рекурсия
Разрастание функций
Функции и побочные эффекты
Резюме
Упражнения
4. Структуры данных: объекты и массивы
Белка-оборотень
Наборы данных
Свойства
Методы
Объекты
Изменяемость
Дневник оборотня
Вычисление корреляции
Перебор массива в цикле
Окончательный анализ
Дальнейшая массивология
Строки и их свойства
Дополнительные параметры
Объект Math
Деструктурирование
JSON
Резюме
Упражнения
5. Функции высшего порядка
Абстракции
Абстрагирование повторов
Функции высшего порядка
Набор данных о шрифтах
Фильтрация массивов
Преобразование и отображение
Суммирование с помощью reduce
Компонуемость
Строки и коды символов
Распознавание текста
Резюме
Упражнения
6. Тайная жизнь объектов
Инкапсуляция
Методы
Прототипы
Классы
Запись классов
Переопределение производных свойств
Словари
Полиморфизм
Символы
Интерфейс итератора
Геттеры, сеттеры и статические методы
Наследование
Оператор instanceof
Резюме
Упражнения
7. Проект: робот
Деревня Медоуфилд
Задача
Постоянные данные
Моделирование
Маршрут почтового грузовика
Поиск пути
Упражнения
8. Ошибки и дефекты
Язык
Строгий режим
Типы
Тестирование
Отладка
Распространение ошибок
Исключения
Подчищаем за исключениями
Выборочный перехват исключений
Утверждения
Резюме
Упражнения
9. Регулярные выражения
Создание регулярных выражений
Проверка на соответствия
Множества символов
Повторяющиеся части шаблона
Группировка подвыражений
Соответствия и группы
Класс Date
Границы слов и строк
Выбор шаблонов
Механизм поиска соответствия
Поиск с возвратом
Метод replace
О жадности
Динамическое создание объектов RegExp
Метод search
Свойство lastIndex
Циклический поиск соответствий
Анализ INI-файла
Интернациональные символы
Резюме
Упражнения
10. Модули
Зачем нужны модули
Пакеты
Импровизированные модули
Выполнение данных как кода
CommonJS
Модули ECMAScript
Сборка и комплектация
Структура модулей
Резюме
Упражнения
11. Асинхронное программирование
Асинхронность
Технологии воронов
Обратные вызовы
Промисы
Сбои
Сетевые трудности
Коллекции промисов
Лавина в сети
Маршрутизация сообщений
Асинхронные функции
Генераторы
Цикл событий
Дефекты асинхронного программирования
Резюме
Упражнения
12. Проект: язык программирования
Синтаксический анализ
Интерпретатор
Специальные формы
Среда выполнения
Функции
Компиляция
Немного мошенничества
Упражнения
13. JavaScript и браузер
Интернет и другие сети
Web
HTML
HTML и JavaScript
В «песочнице»
Совместимость и браузерные войны
14. Объектная модель документа
Структура документа
Деревья
Стандарт
Перемещения по дереву
Поиск элементов
Изменение документа
Создание узлов
Атрибуты
Разметка
Стили
Каскадные стили
Селекторы запросов
Позиционирование и анимация
Резюме
Упражнения
15. Обработка событий
Обработчики событий
События и DOM-узлы
Объекты событий
Распространение событий
Действия по умолчанию
События клавиш
События мыши
События прокрутки
События фокуса
Событие загрузки
События и цикл событий
Таймеры
Устранение повторных срабатываний
Резюме
Упражнения
16. Проект: игровая платформа
Игра
Технология
Уровни
Чтение уровня
Акторы
Инкапсуляция как бремя
Рисование
Движение и столкновения
Изменение акторов
Отслеживание нажатий клавиш
Игра в действии
Упражнения
17. Рисование на холсте
SVG
Элемент canvas
Линии и поверхности
Пути
Кривые
Рисование круговой диаграммы
Текст
Изображения
Преобразования
Сохранение и отмена преобразований
Возвращаясь к игре
Выбор графического интерфейса
Резюме
Упражнения
18. HTTP и формы
Протокол
Браузеры и HTTP
Fetch
HTTP-«песочница»
Цените HTTP по достоинству
HTTPS и безопасность
Поля форм
Фокус
Отключенные поля
Форма в целом
Текстовые поля
Флажки и переключатели
Поля выбора
Поля выбора файлов
Хранение данных на стороне клиента
Резюме
Упражнения
19. Проект: растровый графический редактор
Компоненты
Состояние
Построение DOM
Холст
Приложение
Инструменты рисования
Сохранение и загрузка
История действий
Давайте порисуем
Почему это так сложно?
Упражнения
20. Node.js
Основы
Команда node
Модули
Установка с помощью NPM
Модуль файловой системы
Модуль HTTP
Потоки
Файловый сервер
Резюме
Упражнения
21. Проект: сайт по обмену опытом
Структура
Длительный опрос
HTTP-интерфейс
Сервер
Клиент
Упражнения
Советы по выполнению упражнений
Структура программы
Функции
Структуры данных: объекты и массивы
Функции высшего порядка
Тайная жизнь объектов
Проект: робот
Ошибки и дефекты
Регулярные выражения
Модули
Асинхронное программирование
Проект: язык программирования
Объектная модель документа
Обработка событий
Проект: игровая платформа
Рисование на холсте
HTTP и формы
Проект: растровый графический редактор
Node.js
Проект: сайт по обмену опытом