Содержание

  • Введение
  • О программировании
  • ***
  • Почему язык имеет значение
  • Что такое 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
  • Сервер
  • Клиент
  • Упражнения