для работы с элементами DOM на веб-странице.
Null —специальное значение, благодаря которому мы видим, что пере-
менная намеренно оставлена пустой.
Prototype —свойство конструктора. Методы, добавленные к свойству
prototype, становятся доступны всем объектам, созданным через этот
конструктор.
Undefi ned —специальное значение, которое JavaScript использует,
чтобы показать, что некоему свойству или переменной не было присво-
ено конкретное значение.
О Б А В Т О Р Е
Ник Морган — фронтенд-разработчик в компании Twitter. Он любит все
языки программирования, но к JavaScript питает особую нежность. Ник
живет в Сан-Франциско (в его туманной части) со своей невестой и их
пушистой собакой Оладушком. Ник ведет блог по адресу skilldrick.co.uk.
О художнике
Миран Липовача — автор книги «Изучай Haskell во имя добра!» (изда-
тельство «ДМК-Пресс», 2012). Он обожает боксировать, играть на бас-
гитаре и, разумеется, рисовать. Он неравнодушен к танцующим скеле-
там и числу 71, а проходя через автоматические двери, делает вид, будто
открывает их силой разума.
О техническом редакторе
Перевод статьи Ангус Кролл — автор статьи «Если бы Хемингуэй писал на JavaScript»,
можно почитать и он в равной мере одержим языком JavaScript и литературой. Ангус
здесь: https://
работает в Twitter, в команде UI-фреймворков, и является одним из авто-
m.habrahabr.ru/
ров фреймворка Flight. Он ведет авторитетный блог JavaScript, JavaScript
post/183838/
?mobile=yes
и выступает на конференциях по всему миру.
286
Б Л А Г О Д А Р Н О С Т И
Тысяча благодарностей моей невесте Филли за помощь и поддержку
в течение последних 18 месяцев. Без нее я бы действительно не спра-
вился. И спасибо Оладушку, нашему песику, за великодушное разреше-
ние использовать его имя в примерах кода.
Спасибо Ангусу — если бы не он, я не сидел бы здесь, в Сан-
Франциско, работая над этой книгой. Ангус порекомендовал меня ком-
пании Twitter в 2011 году, а в 2013 году сказал Биллу Поллоку, что идея
написать книгу, которую вы держите сейчас в руках, может меня заинте-
ресовать. И в довершение он согласился быть техническим редактором,
выловив из текста немалое количество JavaScript-ляпсусов.
Спасибо Биллу Поллоку, Сефу Крамеру, Рили Хоффман, Тайлеру
Ортману и остальным сотрудникам издательства No Starch Press, кото-
рые терпеливо помогали мне писать эту книгу. Особая благодарность
Биллу и Сефу за помощь в приведении первоначального текста к его
нынешнему виду.
Спасибо юным рецензентам Ривер Брэдли, Дэмиену Чемпу и Алексу
Чу, от которых я получил ценный отклик по ранним версиям книги.
И наконец, спасибо Мирану Липоваче. Я давний его поклонник:
книга Мирана «Изучай Haskell во имя добра!» — одна из моих любимых
книг по программированию, а его иллюстрации к ней просто велико-
лепны. Когда я узнал, что он будет иллюстратором моей книги, я был
на седьмом небе от радости. Картинки, которые Миран нарисовал для
этой книги, лучше, чем я даже мог себе вообразить, и я счастлив, что мне
выпала удача с ним работать.
287
Издание для досуга
Для широкого круга читателей
Морган Ник
JavaScript для детей
Самоучитель по программированию
Главный редактор Артем Степанов
Руководитель направления Анастасия Троян
Ответственный редактор Анна Дружинец
Литературный редактор Лев Эйделькинд
Научный редактор Дарья Абрамова
Дизайн обложки Сергей Хозин
Верстка Надежда Кудрякова, Елена Бреге
Корректоры Юлия Молокова, Надежда Болотина
Document Outline
ВВЕДЕНИЕ
ЧАСТЬ I. Основы
1. ЧТО ТАКОЕ JAVASCRIPT?
Знакомьтесь: JavaScript
Зачем изучать JavaScript?
Пробуем JavaScript
Строение JavaScript-программы
Что мы узнали
2. ТИПЫ ДАННЫХ И ПЕРЕМЕННЫЕ
Числа и операторы
Переменные
Строки
Булевы значения
undefined и null
Что мы узнали
3. МАССИВЫ
Зачем нужны массивы?
Создание массива
Доступ к элементам массива
Создание и изменение элементов
Разные типы данных в одном массиве
Работаем с массивами
Что полезного можно сделать с массивами
Что мы узнали
4. ОБЪЕКТЫ
Создание объектов
Доступ к значениям внутри объектов
Добавление элементов объекта
Массивы объектов
Исследование объектов в консоли
Что полезного можно сделать с объектами
Что мы узнали
5. ОСНОВЫ HTML
Текстовые редакторы
Наш первый HTML-документ
Теги и элементы
Полноценный HTML-документ
Иерархия HTML
Добавим в HTML ссылки
Что мы узнали
6. УСЛОВИЯ И ЦИКЛЫ
Внедрение JavaScript-кода в HTML
Условные конструкции
Циклы
Что мы узнали
7. ПИШЕМ ИГРУ «ВИСЕЛИЦА»
Взаимодействие с игроком
Проектирование игры
Программируем игру
Код игры
Что мы узнали
8. ФУНКЦИИ
Базовое устройство функции
Создаем простую функцию
Вызов функции
Передача аргументов в функцию
Возврат значения из функции
Вызов функции в качестве значения
Упрощаем код с помощью функций
Ранний выход из функции по return
Многократное использование return вместо конструкции if... else
Что мы узнали
ЧАСТЬ II. Продвинутый JavaScript
9. DOM И JQUERY
Поиск элементов DOM
Работа с деревом DOM через jQuery
Создание новых элементов через jQuery
Анимация элементов средствами jQuery
Цепной вызов и анимация на jQuery
Что мы узнали
10. ИНТЕРАКТИВНОЕ ПРОГРАММИРОВАНИЕ
Отложенное выполнение кода и setTimeout
Отмена действия таймера
Многократный запуск кода и setInterval
Анимация элементов с помощью setInterval
Реакция на действия пользователя
Что мы узнали
11. ПИШЕМ ИГРУ «НАЙДИ КЛАД!»
Проектирование игры
Создаем веб-страницу с HTML-кодом
Выбор случайного места для клада
Обработчик кликов
Код игры
Что мы узнали
12. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Простой объект
Добавление к объектам новых методов
Создание объектов с помощью конструкторов
Рисуем машины
Настройка объектов через прототипы
Что мы узнали
ЧАСТЬ III. Графика
13. ЭЛЕМЕНТ CANVAS
Создаем «холст»
Рисование на «холсте»
Выбор цвета
Рисование контуров прямоугольников
Рисование линий или путей
Заливка путей цветом
Рисование дуг и окружностей
Рисование нескольких окружностей с помощью функции
Что мы узнали
14. АНИМАЦИИ С ПОМОЩЬЮ CANVAS
Движение по странице
Изменение размера квадрата
Случайная пчела
Отскакивающий мяч
Что мы узнали
15. УПРАВЛЕНИЕ АНИМАЦИЯМИ С КЛАВИАТУРЫ
События клавиатуры
Управляем мячом с клавиатуры
Код программы
Запуск программы
Что мы узнали
16. ПИШЕМ ИГРУ «ЗМЕЙКА»: ЧАСТЬ 1
Структура игры
Начинаем писать игру
Рисуем рамку
Отображение счета
Конец игры
Что мы узнали
17. ПИШЕМ ИГРУ «ЗМЕЙКА»: ЧАСТЬ 2
Создаем конструктор Block
Создаем змейку
Перемещаем змейку
Управляем змейкой с клавиатуры
Создаем яблоко
Код игры
Что мы узнали
ПОСЛЕСЛОВИЕ: КУДА ДВИГАТЬСЯ ДАЛЬШЕ
Больше о JavaScript
Веб-программирование
Графическое программирование
3D-программирование
Программирование роботов
Программирование звука
Программирование игр
Обмен кодом с помощью JSFiddle
ГЛОССАРИЙ
ОБ АВТОРЕ
БЛАГОДАРНОСТИ