Содержание
Об авторах 15
Введение 17
О чем эта книга 17
Исходные предположения 18
Пиктограммы, используемые в книге 19
Дополнительные материалы 19
Что дальше 19
Ждем ваших отзывов! 20
Часть I. Приступаем к программированию на JavaScript 21
Глава 1. Самый неправильно понятый язык программирования в мире 23
Что такое JavaScript? 23
И тут пришел Эйх... 24
Сначала был Mocha 24
Даешь больше эффектов! 25
JavaScript взрослеет 26
Динамический язык сценариев 26
Что можно делать с помощью JavaScript? 28
Почему именно JavaScript? 28
Язык JavaScript легок в изучении 29
Где работает JavaScript? JavaScript работает везде! 30
JavaScript — мощный язык 33
JavaScript — востребованный язык 34
Глава 2. Моя первая программа на JavaScript 35
Настройка среды разработки 35
Загрузка и установка браузера Chrome 36
Загрузка и установка редактора исходного кода 37
Оформление JavaScript-кода 44
Выполнение JavaScript в окне браузера 45
Использование JavaScript в атрибутах событий HTML-элементов 45
Использование JavaScript в элементе script 46
Включение внешних JavaScript-файлов 48
Использование консоли разработчика JavaScript 51
Комментирование кода 52
01_content.indd 6 11.03.2016 12:25:44
Содержание 7
Глава 3. Работа с переменными 55
Понятие переменной 55
Объявление переменных 57
Глобальные и локальные области видимости 58
Именование переменных 60
Создание констант с помощью ключевого слова const 62
Работа с типами данных 62
Числовой тип данных 62
Строковый тип данных 65
Булев тип данных 67
Тип данных NaN 68
Тип данных undefined 68
Глава 4. Массивы 69
Создание списка 69
Основные сведения о массивах 70
Отсчет индексов в массивах ведется от нуля 71
В массивах могут храниться данные любого типа 72
Создание массивов 72
Использование ключевого слова new 72
Литеральное определение массива 72
Заполнение массивов значениями 73
Многомерные массивы 73
Доступ к элементам массива 75
Перемещение по элементам массива в цикле 76
Свойства массивов 76
Методы для работы с массивами 77
Использование методов для работы с массивами 77
Глава 5. Операторы, выражения, инструкции 79
Выражения 79
Знакомство с операторами 79
Приоритет операторов 80
Типы операторов 83
Операторы присваивания 83
Операторы сравнения 84
Арифметические операторы 84
Строковый оператор 86
Поразрядные операторы 86
Логические операторы 88
Специальные операторы 89
Объединение операторов 90
01_content.indd 7 11.03.2016 12:25:44
8 Содержание
Глава 6. Циклы и ветвление кода 92
Ветвление кода 92
if...else 92
Инструкция switch 94
Циклы 96
for 96
for...in 98
Цикл while 101
Цикл do...while 101
break и continue 102
Часть II. Организация программ на JavaScript 105
Глава 7. Приобретаем функциональность 107
Роль функций 107
Терминология функций 108
Определение функции 109
Заголовок функции 109
Тело функции 109
Вызов функции 109
Определение параметров и передача аргументов 109
Возврат значения 110
Преимущества использования функций 110
Написание функций 113
Возврат значений 114
Передача и использование аргументов 115
Передача аргументов по значению 116
Передача аргументов по ссылке 117
Вызов функции с неполным числом аргументов 117
Аргументы по умолчанию 117
Вызов функции с количеством аргументов,
превышающим количество параметров 118
Получение значений аргументов с помощью объекта arguments 118
Область видимости функции 119
Анонимные функции 120
Различия между анонимными и именованными функциями 120
Самовыполняющиеся анонимные функции 120
Сделайте это снова с помощью рекурсии 121
Функции, объявленные в других функциях 122
Глава 8. Создание и использование объектов 124
Объект моих желаний 124
Создание объектов 125
01_content.indd 8 11.03.2016 12:25:45
Содержание 9
Определение объектов с помощью объектных литералов 125
Определение объектов с помощью конструктора Object() 126
Получение и установка свойств объектов 127
Точечная нотация 127
Скобочная нотация 128
Удаление свойств 129
Работа с методами 129
Использование ключевого слова this 131
Объектно-ориентированный способ разбогатеть: наследование 132
Создание объектов с помощью конструкторов 133
Видоизменение объектного типа 134
Создание объектов с помощью метода Object.create() 135
Часть III. JavaScript в Интернете 137
Глава 9. Управление браузером с помощью объекта Window 139
Браузерная среда 139
Пользовательский интерфейс 140
Загрузчик 140
Синтаксический анализ HTML-документа 142
Синтаксический анализ CSS-стилей 142
Синтаксический анализ JavaScript 142
Компоновка и визуализация 142
Взаимодействие с BOM 143
Объект Navigator 143
Объект Window 145
Использование методов объекта window 150
Глава 10. Манипулирование документами с помощью DOM 152
Что такое DOM 152
Отношения между узлами 154
Использование свойств и методов объекта Document 158
Использование свойств и методов объекта Element 159
Работа с содержимым элементов 162
Свойство innerHTML 163
Установка значений атрибутов 163
Получение элемента по его идентификатору, имени тега или классу 164
Метод getElementById() 164
Метод getElementsByTagName() 165
Метод getElementsByClassName() 165
Использование свойств объекта Attribute 166
Создание и присоединение элементов 167
Удаление элементов 167
01_content.indd 9 11.03.2016 12:25:45
10 Содержание
Глава 11. Использование событий в JavaScript 169
События 169
Обработка событий 171
Встроенные обработчики событий 171
Обработка событий с использованием свойств элементов 172
Обработка событий с использованием метода addEventListener() 173
Отмена распространения событий 177
Глава 12. Интеграция ввода и вывода данных 179
HTML-формы 179
Элемент form 179
Элемент label 181
Элемент input 181
Элемент select 183
Элемент textarea 183
Элемент button 184
Работа с объектом Form 184
Использование свойств объекта Form 184
Использование методов объекта Form 186
Доступ к элементам формы 187
Получение и установка значений элементов формы 188
Проверка пользовательского ввода 189
Глава 13. Работа с CSS и графикой 192
Использование объекта Style 192
Получение текущего стиля элемента 193
Установка стилевых свойств 196
Анимация элементов с помощью объекта Style 196
Работа с изображениями 199
Использование объекта Image 200
Создание трансформируемых кнопок 200
Увеличение размеров изображения при наведении на него указателя мыши 201
Создание слайд-шоу 202
Использование анимационных свойств объекта Style 204
Часть IV. Дополнительные темы 207
Глава 14. Поиск с использованием регулярных выражений 209
Поиск текста с помощью регулярных выражений 209
Создание регулярных выражений 211
Использование объекта RegExp 211
Литеральные регулярные выражения 213
Тестирование регулярных выражений 214
Специальные символы в регулярных выражениях 214
01_content.indd 10 11.03.2016 12:25:45
Содержание 11
Использование модификаторов 216
Использование регулярных выражений в коде 216
Глава 15. Функции обратного вызова и замыкания 220
Что такое функции обратного вызова 220
Функции в роли аргументов 220
Написание функций, использующих функции обратного вызова 221
Использование именованных функций обратного вызова 222
Замыкания 224
Использование замыканий 228
Глава 16. Приветствуем AJAX и JSON 230
Закулисная работа AJAX 230
Примеры применения AJAX 231
Детальное ознакомление с работой AJAX 232
Использование объекта XMLHttpRequest 236
Политика одинакового источника 238
CORS — серебряная пуля AJAX-запросов 240
Передача объектов с помощью JSON 241
Часть V. JavaScript и HTML5 245
Глава 17. Программные интерфейсы HTML5 247
Как работают API 247
Проверка браузерной поддержки программных интерфейсов HTML5 248
Знакомство с программными интерфейсами HTML5 249
Использование HTML5 Geolocation API 251
Что такое геолокация 251
Как работает геолокация 251
Применение геолокации 252
Сочетание геолокации с картами Google 254
Работа со звуком и видео 258
Глава 18. Библиотека jQuery 262
Меньше кода, больше дела 262
Приступаем к работе с jQuery 262
Объект jQuery 264
Готов ли документ к работе? 265
Использование селекторов jQuery 265
Изменение документа с помощью jQuery 266
Получение и установка значений атрибутов 266
Изменение стилей CSS 266
Манипулирование элементами в DOM 267
События 268
01_content.indd 11 11.03.2016 12:25:45
12 Содержание
Использование метода on() для подключения событий 268
Открепление событий с помощью метода off() 270
Привязка событий к еще не существующим элементам 270
Другие методы для работы с событиями 271
Эффекты 271
Базовые эффекты 272
Эффекты затухания 272
Эффекты скольжения 272
Задание аргументов анимационных методов 273
Создание пользовательских анимационных эффектов с помощью метода
animate() 273
Пример выполнения анимации средствами jQuery 274
AJAX 275
Использование метода ajax() 275
Сокращенные методы для работы с AJAX 276
Часть VI. Великолепные десятки 279
Глава 19. Десять JavaScript-фреймворков и библиотек,
которые вам следует изучить 281
AngularJS 281
Backbone.js 283
Ember.js 284
Famo.us 285
Knockout 285
QUnit 286
Underscore.js 287
Modernizr 288
Handlebars.js 289
jQuery 290
Глава 20. Десять самых распространенных ошибок
в JavaScript-программах и как их избежать 292
Путаница с оператором сравнения 293
Избегайте неправильного использования оператора присваивания 293
Как избежать подводных рифов сравнений 293
Непарные скобки 294
Несоответствие кавычек 295
Отсутствующие скобки 295
Отсутствие точки с запятой 296
Ошибки, связанные с неправильным использованием регистра букв 296
Ссылки на код, не успевший загрузиться 296
Плохие имена переменных 298
01_content.indd 12 11.03.2016 12:25:46
Содержание 13
Ошибки, связанные с неправильным использованием
областей видимости переменных 299
Пропуск параметров при вызове функций 299
Подсчитываем ошибки: забывчивость в отношении отсчета индексов от нуля 299
Глава 21. Десять онлайн-инструментов, которые улучшат
качество создаваемых вами программ на JavaScript 301
JSLint 301
JSFiddle.net 302
JSBin 303
javascriptcompressor.com 303
jsbeautifier.org 305
Генератор регулярных выражений JavaScript RegEx 306
JSONformatter 306
jshint.com 307
Сайт Mozilla Development Network 308
Дуглас Крокфорд 309
Предметный указатель 310
01_content.indd 13 11.03.2016 12:25:46