JavaScript. Подробное руководство, 6-е издание

Дэвид Флэнаган

Обложка:




Оглавление

Предисловие
Глава 1. Введение в JavaScript
1.1. Базовый JavaScript
1.2. Клиентский JavaScript
1.2.1. Пример: калькулятор платежей по ссуде на JavaScript
Часть I. Базовый JavaScript
Глава 2. Лексическая структура
2.1. Набор символов
2.1.1. Чувствительность к регистру
2.1.2. Пробелы, переводы строк и символы управления форматом
2.1.3. Экранированные последовательности Юникода
2.1.4. Нормализация
2.2. Комментарии
2.3. Литералы
2.4. Идентификаторы и зарезервированные слова
2.4.1. Зарезервированные слова
2.5. Необязательные точки с запятой
Глава 3. Типы, значения и переменные
3.1. Числа
3.1.1. Целые литералы
3.1.2. Литералы вещественных чисел
3.1.3. Арифметические операции в JavaScript
3.1.4. Двоичное представление вещественных чисел и ошибки округления
3.1.5. Дата и время
3.2. Текст
3.2.1. Строковые литералы
3.2.2. Управляющие последовательности в строковых литералах
3.2.3. Работа со строками
3.2.4. Сопоставление с шаблонами
3.3. Логические значения
3.4. Значения null и undefined
3.5. Глобальный объект
3.6. Объекты-обертки
3.7. Неизменяемые простые значения и ссылки на изменяемые объекты
3.8. Преобразование типов
3.8.1. Преобразования и равенство
3.8.2. Явные преобразования
3.8.3. Преобразование объектов в простые значения
3.9. Объявление переменных
3.9.1 Повторные и опущенные объявления
3.10. Область видимости переменной
3.10.1. Область видимости функции и подъем
3.10.2. Переменные как свойства
3.10.3 Цепочки областей видимости
Глава 4. Выражения и операторы
4.1. Первичные выражения
4.2. Инициализаторы объектов и массивов
4.3. Выражения определений функций
4.4. Выражения обращения к свойствам
4.5. Выражения вызова
4.6. Выражения создания объектов
4.7. Обзор операторов
4.7.1. Количество операндов
4.7.2. Типы данных операндов и результата
4.7.3. Левосторонние выражения
4.7.4. Побочные эффекты операторов
4.7.5. Приоритет операторов
4.7.6. Ассоциативность операторов
4.7.7. Порядок вычисления
4.8. Арифметические выражения
4.8.1. Оператор +
4.8.2. Унарные арифметические операторы
4.8.3. Поразрядные операторы
4.9. Выражения отношений
4.9.1. Операторы равенства и неравенства
4.9.2. Операторы сравнения
4.9.3. Оператор in
4.9.4. Оператор instanceof
4.10. Логические выражения
4.10.1. Логическое И (&&)
4.10.2. Логическое ИЛИ (||)
4.10.3. Логическое НЕ (!)
4.11. Выражения присваивания
4.11.1. Присваивание с операцией
4.12. Вычисление выражений
4.12.1. eval()
4.12.2. Использование eval() в глобальном контексте
4.12.3. Использование eval() в строгом режиме
4.13. Прочие операторы
4.13.1. Условный оператор (?:)
4.13.2. Оператор typeof
4.13.3. Оператор delete
4.13.4. Оператор void
4.13.5. Оператор "запятая" (,)
Глава 5. Инструкции
5.1. Инструкции­выражения
5.2. Составные и пустые инструкции
5.3. Инструкции­объявления
5.3.1. Инструкция var
5.3.2. Инструкция function
5.4. Условные инструкции
5.4.1. Инструкция if
5.4.2. Инструкция else if
5.4.3. Инструкция switch
5.5. Циклы
5.5.1. Инструкция while
5.5.2. Инструкция do/while
5.5.3. Инструкция for
5.5.4. Инструкция for/in
5.6. Переходы
5.6.1. Метки инструкций
5.6.2. Инструкция break
5.6.3. Инструкция continue
5.6.4. Инструкция return
5.6.5. Инструкция throw
5.6.6. Инструкция try/catch/finally
5.7. Прочие инструкции
5.7.1. Инструкция with
5.7.2. Инструкция debugger
5.7.3. "use strict"
5.8. Итоговая таблица JavaScript-инструкций
Глава 6. Объекты
6.1. Создание объектов
6.1.1. Литералы объектов
6.1.2. Создание объектов с помощью оператора new
6.1.3. Прототипы
6.1.4. Object.create()
6.2. Получение и изменение свойств
6.2.1. Объекты как ассоциативные массивы
6.2.2. Наследование
6.2.3. Ошибки доступа к свойствам
6.3. Удаление свойств
6.4. Проверка существования свойств
6.5. Перечисление свойств
6.6. Методы чтения и записи свойств
6.7. Атрибуты свойств
6.7.1. Устаревшие приемы работы с методами чтения и записи
6.8. Атрибуты объекта
6.8.1. Атрибут prototype
6.8.2. Атрибут class
6.8.3. Атрибут extensible
6.9. Сериализация объектов
6.10. Методы класса Object
6.10.1. Метод toString()
6.10.2. Метод toLocaleString()
6.10.3. Метод toJSON()
6.10.4. Метод valueOf()
Глава 7. Массивы
7.1. Создание массивов
7.2. Чтение и запись элементов массива
7.3. Разреженные массивы
7.4. Длина массива
7.5. Добавление и удаление элементов массива
7.6. Обход элементов массива
7.7. Многомерные массивы
7.8. Методы класса Array
7.8.1. Метод join()
7.8.2. Метод reverse()
7.8.3. Метод sort()
7.8.4. Метод concat()
7.8.5. Метод slice()
7.8.6. Метод splice()
7.8.7. Методы push() и pop()
7.8.8. Методы unshift() и shift()
7.8.9. Методы toString() и toLocaleString()
7.9. Методы класса Array, определяемые стандартом ECMAScript 5
7.9.1. Метод forEach()
7.9.2. Метод map()
7.9.3. Метод filter()
7.9.4. Методы every() и some()
7.9.5. Методы reduce() и reduceRight()
7.9.6. Методы indexOf() и lastIndexOf()
7.10. Тип Array
7.11. Объекты, подобные массивам
7.12. Строки как массивы
Глава 8. Функции
8.1. Определение функций
8.1.1. Вложенные функции
8.2. Вызов функций
8.2.2. Вызов методов
8.2.3. Вызов конструкторов
8.2.4. Косвенный вызов
8.3. Аргументы и параметры функций
8.3.1. Необязательные аргументы
8.3.2. Списки аргументов переменной длины: объект Arguments
8.3.3. Использование свойств объекта в качестве аргументов
8.3.4. Типы аргументов
8.3. Функции как данные
8.4.1. Определение собственных свойств функций
8.5. Функции как пространства имен
8.6. Замыкания
8.7. Свойства и методы функций и конструктор Function
8.7.1. Свойство length
8.7.2. Свойство prototype
8.7.3. Методы call() и apply()
8.7.4. Метод bind()
8.7.5. Метод toString()
8.7.6. Конструктор Function()
8.7.7. Вызываемые объекты
8.8. Функциональное программирование
8.8.1. Обработка массивов с помощью функций
8.8.2. Функции высшего порядка
8.8.3. Частичное применение функций
8.8.4. Мемоизация
Глава 9. Классы и модули
9.1. Классы и прототипы
9.2. Классы и конструкторы
9.2.1. Конструкторы и идентификация класса
9.2.2. Свойство constructor
9.3. Классы в стиле Java
9.4. Наращивание возможностей классов
9.5. Классы и типы
9.5.1. Оператор instanceof
9.5.2. Свойство constructor
9.5.3. Имя конструктора
9.5.4. Грубое определение типа
9.6. Приемы объектно-ориентированного программирования в JavaScript
9.6.1. Пример: класс множества
9.6.2. Пример: типы-перечисления
9.6.3. Стандартные методы преобразований
9.6.4. Методы сравнения
9.6.5. Заимствование методов
9.6.6. Частные члены
9.6.7. Перегрузка конструкторов и фабричные методы
9.7. Подклассы
9.7.1. Определение подкласса
9.7.2. Вызов конструктора и методов базового класса
9.7.3. Композиция в сравнении с наследованием
9.7.4. Иерархии классов и абстрактные классы
9.8. Классы в ECMAScript 5
9.8.1. Определение неперечислимых свойств
9.8.2. Определение неизменяемых классов
9.8.3. Сокрытие данных объекта
9.8.4. Предотвращение расширения класса
9.8.5. Подклассы и ECMAScript 5
9.8.6. Дескрипторы свойств
9.9. Модули
9.9.1. Объекты как пространства имен
9.9.2. Область видимости функции как частное пространство имен
Глава 10. Шаблоны и регулярные выражения
10.1. Определение регулярных выражений
10.1.1. Символы литералов
10.1.2. Классы символов
10.1.3. Повторение
10.1.4. Альтернативы, группировка и ссылки
10.1.5. Указание позиции соответствия
10.1.6. Флаги
10.2. Методы класса String для поиска по шаблону
10.3. Объект RegExp
10.3.1. Свойства RegExp
10.3.2. Методы RegExp
Глава 11. Подмножества и расширения JavaScript
11.1. Подмножества JavaScript
11.1.1. Подмножество The Good Parts
11.1.2. Безопасные подмножества
11.2. Константы и контекстные переменные
11.3. Присваивание с разложением
11.4. Итерации
11.4.1. Цикл for/each
11.4.2. Итераторы
11.4.3. Генераторы
11.4.4. Генераторы массивов
11.4.5. Выражения-генераторы
11.5. Краткая форма записи функций
11.6. Множественные блоки catch
11.7. E4X: ECMAScript for XML
Глава 12. Серверный JavaScript
12.1. Управление Java с помощью Rhino
12.1.1. Пример использования Rhino
12.2. Асинхронный ввод/вывод в интерпретаторе Node
12.2.1. Пример использования Node: HTTP-сервер
12.2.2. Пример использования Node: модуль утилит клиента HTTP
Часть II. Клиентский JavaScript
Глава 13. JavaScript в веб­броузерах
13.1. Клиентский JavaScript
13.1.1. Сценарии JavaScript в веб­документах
13.1.2. Сценарии JavaScript в веб­приложениях
13.2. Встраивание JavaScript-кода в разметку HTML
13.2.1. Элемент
13.2.2. Сценарии во внешних файлах
13.2.3. Тип сценария
13.2.4. Обработчики событий в HTML
13.4. JavaScript в URL
13.3. Выполнение JavaScript-программ
13.3.1. Синхронные, асинхронные и отложенные сценарии
13.3.2. Выполнение, управляемое событиями
13.3.3. Модель потоков выполнения в клиентском JavaScript
13.3.4. Последовательность выполнения клиентских сценариев
13.4. Совместимость на стороне клиента
13.4.1. Библиотеки обеспечения совместимости
13.4.2. Классификация броузеров
13.4.3. Проверка особенностей
13.4.4. Режим совместимости и стандартный режим
13.4.5. Проверка типа броузера
13.4.6. Условные комментарии в Internet Explorer
13.5. Доступность
13.6. Безопасность
13.6.1. Чего не может JavaScript
13.6.2. Политика общего происхождения
13.6.3. Взаимодействие с модулями расширения и элементами управления ActiveX
13.6.4. Межсайтовый скриптинг
13.6.5. Атаки типа отказа в обслуживании
13.7. Клиентские фреймворки
Глава 14. Объект Window
14.1. Таймеры
14.2. Адрес документа и навигация по нему
14.2.1. Анализ URL
14.2.2. Загрузка нового документа
14.3. История посещений
14.4. Информация о броузере и об экране
14.4.1. Объект Navigator
14.4.2. Объект Screen
14.5. Диалоги
14.6. Обработка ошибок
14.7. Элементы документа как свойства окна
14.8. Работа с несколькими окнами и фреймами
14.8.1. Открытие и закрытие окон
14.8.2. Отношения между фреймами
14.8.3. JavaScript во взаимодействующих окнах
Глава 15. Работа с документами
15.1. Обзор модели DOM
15.2. Выбор элементов документа
15.2.1. Выбор элементов по значению атрибута id
15.2.2. Выбор элементов по значению атрибута name
15.2.3. Выбор элементов по типу
15.2.4. Выбор элементов по классу CSS
15.2.5. Выбор элементов с использованием селекторов CSS
15.2.6. document.all[]
15.3. Структура документа и навигация по документу
15.3.1. Документы как деревья узлов
15.3.2. Документы как деревья элементов
15.4. Атрибуты
15.4.1. HTML-атрибуты как свойства объектов Element
15.4.2. Доступ к нестандартным HTML-атрибутам
15.4.3. Атрибуты с данными
15.4.4. Атрибуты как узлы типа Attr
15.5. Содержимое элемента
15.5.1. Содержимое элемента в виде HTML
15.5.2. Содержимое элемента в виде простого текста
15.5.3. Содержимое элемента в виде текстовых узлов
15.6. Создание, вставка и удаление узлов
15.6.1. Создание узлов
15.6.2. Вставка узлов
15.6.3. Удаление и замена узлов
15.6.4. Использование объектов DocumentFragment
15.7. Пример: создание оглавления
15.8. Геометрия документа и элементов и прокрутка
15.8.1. Координаты документа и видимой области
15.8.2. Определение геометрии элемента
15.8.3. Определение элемента в указанной точке
15.8.4. Прокрутка
15.8.5. Подробнее о размерах, позициях и переполнении элементов
15.9. HTML-формы
15.9.1. Выбор форм и элементов форм
15.9.2. Свойства форм и их элементов
15.9.3. Обработчики событий форм и их элементов
15.9.4. Кнопки
15.9.5. Переключатели и флажки
15.9.6. Текстовые поля ввода
15.9.7. Элементы Select и Option
15.10. Другие особенности документов
15.10.1. Свойства объекта Document
15.10.2. Метод document.write()
15.10.3. Получение выделенного текста
15.10.4. Редактируемое содержимое
Глава 16. Каскадные таблицы стилей
16.1. Обзор CSS
16.1.1. Каскад правил
16.1.2. История развития CSS
16.1.3. Сокращенная форма определения свойств
16.1.4. Нестандартные свойства
16.1.5. Пример CSS-таблицы
16.2. Наиболее важные CSS-свойства
16.2.1. Позиционирование элементов с помощью CSS
16.2.2. Рамки, поля и отступы
16.2.3. Блочная модель и детали позиционирования в CSS
16.2.4. Отображение и видимость элементов
16.2.5. Цвет, прозрачность и полупрозрачность
16.2.6. Частичная видимость: свойства overflow и clip
16.2.7. Пример: перекрытие полупрозрачных окон
16.3. Управление встроенными стилями
16.3.1. Создание анимационных эффектов средствами CSS
16.4. Вычисленные стили
16.5. CSS-классы
16.6. Управление таблицами стилей
16.6.1. Включение и выключение таблиц стилей
16.6.2. Получение, вставка и удаление правил из таблиц стилей
16.6.3. Создание новых таблиц стилей
Глава 17. Обработка событий
17.1. Типы событий
17.1.1. Старые типы событий
17.1.2. События модели DOM
17.1.3. События HTML5
17.1.4. События, генерируемые сенсорными экранами и мобильными устройствами
17.2. Регистрация обработчиков событий
17.2.1. Установка свойств обработчиков событий
17.2.2. Установка атрибутов обработчиков событий
17.2.3. addEventListener()
17.2.4. attachEvent()
17.3. Вызов обработчиков событий
17.3.1. Аргумент обработчика событий
17.3.2. Контекст обработчиков событий
17.3.3. Область видимости обработчика событий
17.3.4. Возвращаемые значения обработчиков
17.3.5. Порядок вызова
17.3.6. Распространение событий
17.3.7. Отмена событий
17.4. События загрузки документа
17.5. События мыши
17.6. События колесика мыши
17.7. События механизма буксировки (drag-and-drop)
17.8. События ввода текста
17.9. События клавиатуры
Глава 18. Работа с протоколом HTTP
18.1. Использование объекта XMLHttpRequest
18.1.1. Выполнение запроса
18.1.2. Получение ответа
18.1.3. Оформление тела запроса
18.1.4. События, возникающие в ходе выполнения HTTP-запроса
18.1.5. Прерывание запросов и предельное время ожидания
18.1.6. Выполнение междоменных HTTP-запросов
18.2. Выполнение HTTP-запросов с помощью : JSONP
18.3. Архитектура Comet на основе стандарта "Server-Sent Events"
Глава 19. Библиотека jQuery
19.1. Основы jQuery
19.1.1. Функция jQuery()
19.1.2. Запросы и результаты запросов
19.2. Методы чтения и записи объекта jQuery
19.2.1. Чтение и запись значений HTML-атрибутов
19.2.2. Чтение и запись значений CSS-атрибутов
19.2.3. Чтение и запись CSS-классов
19.2.4. Чтение и запись значений элементов HTML-форм
19.2.5. Чтение и запись содержимого элемента
19.2.6. Чтение и запись параметров геометрии элемента
19.2.7. Чтение и запись данных в элементе
19.3. Изменение структуры документа
19.3.1. Вставка и замена элементов
19.3.2. Копирование элементов
19.3.3. Обертывание элементов
19.3.4. Удаление элементов
19.4. Обработка событий с помощью библиотеки jQuery
19.4.1. Простые методы регистрации обработчиков событий
19.4.2. Обработчики событий в библиотеке jQuery
19.4.3. Объект Event в библиотеке jQuery
19.4.4. Дополнительные способы регистрации обработчиков событий
19.4.5. Удаление обработчиков событий
19.4.6. Возбуждение событий
19.4.7. Реализация собственных событий
19.4.8. Динамические события
19.5. Анимационные эффекты
19.5.1. Простые эффекты
19.5.2. Реализация собственных анимационных эффектов
19.5.3. Отмена, задержка и постановка эффектов в очередь
19.6. Реализация Ajax в библиотеке jQuery
19.6.1. Метод load()
19.6.2. Вспомогательные функции поддержки Ajax
19.6.3. Функция jQuery.ajax()
19.6.4. События в архитектуре Ajax
19.7. Вспомогательные функции
19.8. Селекторы и методы выбора в библиотеке jQuery
19.8.1. Селекторы jQuery
19.8.2. Методы выбора
19.9. Расширение библиотеки jQuery с помощью модулей расширений
19.10. Библиотека jQuery UI
Глава 20. Сохранение данных на стороне клиента
20.1. Объекты localStorage и sessionStorage
20.1.1. Срок хранения и область видимости
20.1.2. Прикладной программный интерфейс объекта Storage
20.1.3. События объекта Storage
20.2. Cookies
20.2.1. Атрибуты cookie: срок хранения и область видимости
20.2.2. Сохранение cookies
20.2.3. Чтение cookies
20.2.5. Ограничения cookies
20.2.5. Реализация хранилища на основе cookies
20.3. Механизм сохранения userData в IE
20.4. Хранилище приложений и автономные веб­приложения
20.4.1. Объявление кэшируемого приложения
20.4.2. Обновление кэша
20.4.3. Автономные веб­приложения
Глава 21. Работа с графикой и медиафайлами на стороне клиента
21.1. Работа с готовыми изображениями
21.1.1. Ненавязчивая реализация смены изображений
21.2. Работа с аудио­ и видеопотоками
21.2.1. Выбор типа и загрузка
21.2.2. Управление воспроизведением
21.2.3. Определение состояния мультимедийных элементов
21.2.4 События мультимедийных элементов
21.3. SVG - масштабируемая векторная графика
21.4. Создание графики с помощью элемента
21.4.1. Рисование линий и заливка многоугольников
21.4.2. Графические атрибуты
21.4.3. Размеры и система координат холста
21.4.4. Преобразование системы координат
21.4.5. Рисование и заливка кривых
21.4.6. Прямоугольники
21.4.7. Цвет, прозрачность, градиенты и шаблоны
21.4.8. Атрибуты рисования линий
21.4.9. Текст
21.4.10. Отсечение
21.4.11. Тени
21.4.12. Изображения
21.4.13. Композиция
21.4.14. Манипулирование пикселами
21.4.15. Определение попадания
21.4.16. Пример использования элемента : внутристрочные диаграммы
Глава 22. Прикладные интерфейсы HTML5
22.1. Геопозиционирование
22.2. Управление историей посещений
22.3. Взаимодействие документов с разным происхождением
22.4. Фоновые потоки выполнения
22.4.1. Объект Worker
22.4.2. Область видимости фонового потока
22.4.3. Примеры использования фоновых потоков
22.5. Типизированные массивы и буферы
22.6. Двоичные объекты
22.6.1. Файлы как двоичные объекты
22.6.2. Загрузка двоичных объектов
22.6.3. Конструирование двоичных объектов
22.6.4. URL-адреса, ссылающиеся на двоичные объекты
22.6.5. Чтение двоичных объектов
22.7. Прикладной интерфейс к файловой системе
22.8. Базы данных на стороне клиента
22.9. Веб-сокеты
Часть III. Справочник по базовому JavaScript
Справочник по базовому JavaScript
Часть IV. Справочник по клиентскому JavaScript
Справочник по клиентскому JavaScript
Алфавитный указатель