Язык JavaScript стремительно набирает популярность: он поддерживается всеми браузерами и все активнее проникает в серверное программирование. Однако даже у опытных программистов, знакомых с такими языками, как Java, C#, C или C++, могут возникнуть затруднения при переходе на JavaScript. Эта книга призвана облегчить их задачу.
В отличие от большинства изданий, посвященных JavaScript, акцент здесь ставится не на переход от прежних версий к современной, а на освоение профессиональными веб-разработчиками нового для них языка программирования. От самых азов автор постепенно переходит к рассмотрению сложных вопросов; темы начального, среднего и высокого уровня помечены в тексте специальными значками.
Изучив книгу, читатель сумеет написать следующую версию своего приложения на современном JavaScript.
Author(s): Кэй С. Хорстман
Edition: 1
Publisher: ДМК Пресс
Year: 2021
Language: Russian
Commentary: Vector PDF
Pages: 288
City: М.
Tags: Programming; JavaScript; Functional Programming; Asynchronous Programming; Object-Oriented Programming; TypeScript; Metaprogramming; Elementary
Титульный лист
Предисловие
Об авторе
От издательства
Глава 1. Значения и переменные
1.1. Запуск JavaScript
1.2. Типы и оператор typeof
1.3. Комментарии
1.4. Объявления переменных
1.5. Идентификаторы
1.6. Числа
1.7. Арифметические операторы
1.8. Булевы значения
1.9. null и undefined
1.10. Строковые литералы
1.11. Шаблонные литералы
1.12. Объекты
1.13. Синтаксис объектного литерала
1.14. Массивы
1.15. JSON
1.16. Деструктуризация
1.17. Еще о деструктуризации
1.17.1. Дополнительные сведения о деструктуризации объектов
1.17.2. Объявление прочих
1.17.3. Значения по умолчанию
Упражнения
Глава 2. Управляющие конструкции
2.1. Выражения и предложения
2.2. Вставка точки с запятой
2.3. Ветвления
2.4. Булевость
2.5. Сравнение
2.6. Смешанное сравнение
2.7. Логические операторы
2.8. Предложение switch
2.9. Циклы while и do
2.10. Циклы for
2.10.1. Классический цикл for
2.10.2. Цикл for of
2.10.3. Цикл for in
2.11. Break и continue
2.12. Перехват исключений
Упражнения
Глава 3. Функции и функциональное программирование
3.1. Объявление функций
3.2. Функции высшего порядка
3.3. Функциональные литералы
3.4. Стрелочные функции
3.5. Функциональная обработка массива
3.6. Замыкания
3.7. Крепкие объекты
3.8. Строгий режим
3.9. Проверка типов аргументов
3.10. Передача большего или меньшего числа аргументов
3.11. Аргументы по умолчанию
3.12. Прочие параметры и оператор расширения
3.13. Имитация именованных аргументов с помощью деструктуризации
3.14. Поднятие
3.15. Возбуждение исключений
3.16. Перехват исключений
3.17. Ветвь finally
Упражнения
Глава 4. Объектно-ориентированное программирование
4.1. Методы
4.2. Прототипы
4.3. Конструкторы
4.4. Синтаксис классов
4.5. Акцессоры чтения и записи
4.6. Поля экземпляра и закрытые методы
4.7. Статические методы и поля
4.8. Подклассы
4.9. Переопределение методов
4.10. Конструирование подкласса
4.11. Классовые выражения
4.12. Ссылка this
Упражнения
Глава 5. Числа и даты
5.1. Числовые литералы
5.2. Форматирование чисел
5.3. Разбор чисел
5.4. Функции и константы в классе Number
5.5. Математические функции и константы
5.6. Большие целые
5.7. Конструирование дат
5.8. Функции и методы класса Date
5.9. Форматирование дат
Упражнения
Глава 6. Строки и регулярные выражения
6.1. Преобразование между строками и последовательностями кодовых точек
6.2. Подстроки
6.3. Прочие методы класса String
6.4. Тегированные шаблонные литералы
6.5. Простые шаблонные литералы
6.6. Регулярные выражения
6.7. Литеральные регулярные выражения
6.8. Флаги
6.9. Регулярные выражения и Юникод
6.10. Методы класса RegExp
6.11. Группы
6.12. Методы класса String для работы с регулярными выражениями
6.13. Еще о методе replace
6.14. Экзотические возможности
Упражнения
Глава 7. Массивы и коллекции
7.1. Конструирование массива
7.2. Свойство length и индексные свойства
7.3. Удаление и добавление элементов
7.4. Прочие методы изменения массива
7.5. Порождение элементов
7.6. Поиск элементов
7.7. Перебор всех элементов
7.8. Разреженные массивы
7.9. Редукция
7.10. Отображения
7.11. Множества
7.12. Слабые отображения и множества
7.13. Типизированные массивы
7.14. Буферные массивы
Упражнения
Глава 8. Интернационализация
8.1. Понятие локали
8.2. Задание локали
8.3. Форматирование чисел
8.4. Локализация даты и времени
8.4.1. Форматирование объектов Date
8.4.2. Диапазоны
8.4.3. Относительное время
8.4.4. Форматирование с точностью до отдельных частей
8.5. Порядок следования
8.6. Другие методы класса String, чувствительные к локали
8.7. Правила образования множественного числа и списков
8.8. Различные средства, относящиеся к локалям
Упражнения
Глава 9. Асинхронное программирование
9.1. Конкурентные задачи в JavaScript
9.2. Создание обещаний
9.3. Немедленно улаживаемые обещания
9.4. Получение результата обещания
9.5. Сцепление обещаний
9.6. Обработка отвергнутых обещаний
9.7. Выполнение нескольких обещаний
9.8. Гонка нескольких обещаний
9.9. Асинхронные функции
9.10. Асинхронно возвращаемые значения
9.11. Конкурентное ожидание
9.12. Исключения в асинхронных функциях
Упражнения
Глава 10. Модули
10.1. Понятие модуля
10.2. Модули в ECMAScript
10.3. Импорт по умолчанию
10.4. Именованный импорт
10.5. Динамический импорт
10.6. Экспорт
10.6.1. Именованный экспорт
10.6.2. Экспорт по умолчанию
10.6.3. Экспортируемые средства – это переменные
10.6.4. Реэкспорт
10.7. Упаковка модулей
Упражнения
Глава 11. Метапрограммирование
11.1. Символы
11.2. Настройка с помощью символьных свойств
11.2.1. Настройка метода toString
11.2.2. Управление преобразованием типов
11.2.3. Символ Species
11.3. Атрибуты свойств
11.4. Перечисление свойств
11.5. Проверка наличия свойства
11.6. Защита объектов
11.7. Создание и обновление объектов
11.8. Доступ к прототипу и его обновление
11.9. Клонирование объектов
11.10. Свойства-функции
11.11. Привязка аргументов и вызов методов
11.12. Прокси
11.13. Класс Reflect
11.14. Инварианты прокси
Упражнения
Глава 12. Итераторы и генераторы
12.1. Итерируемые значения
12.2. Реализация итерируемого объекта
12.3. Закрываемые итераторы
12.4. Генераторы
12.5. Вложенное yield
12.6. Генераторы как потребители
12.7. Генераторы и асинхронная обработка
12.8. Асинхронные генераторы и итераторы
Упражнения
Глава 13. Введение в TypeScript
13.1. Аннотации типов
13.2. Запуск TypeScript
13.3. Терминология, относящаяся к типам
13.4. Примитивные типы
13.5. Составные типы
13.6. Выведение типа
13.7. Подтипы
13.7.1. Правило подстановки
13.7.2. Факультативные и лишние свойства
13.7.3. Вариантность типов массива и объекта
13.8. Классы
13.8.1. Объявление классов
13.8.2. Тип экземпляра класса
13.8.3. Статический тип класса
13.9. Структурная типизация
13.10. Интерфейсы
13.11. Индексные свойства
13.12. Более сложные параметры функций
13.12.1. Факультативные, подразумеваемые по умолчанию и прочие параметры
13.12.2. Деструктуризация параметров
13.12.3. Вариантность типа функции
13.12.4. Перегрузка
13.13. Обобщенное программирование
13.13.1. Обобщенные классы и типы
13.13.2. Обобщенные функции
13.13.3. Ограничения на типы
13.13.4. Стирание
13.13.5. Вариантность обобщенных типов
13.13.6. Условные типы
13.13.7. Отображаемые типы
Упражнения
Предметный указатель