Изучаем программирование на JavaScript. Изучаем программирование на JavaScript (Эрик Фримен, Элизабет Робсон) Изучаем javascript o reilly

О других книгах серии Head First «Правильно выбранный тон для внутреннего раскрепощенного эксперта-программиста, скрывающегося в каждом из нас. Отличный справочник по практическим стратегиям разработки - мой мозг работает, не отвлекаясь на надоедливый, устаревший академический жаргон». - Трэвис Каланик, директор Uber «Замечательная ясность, юмор и изрядная доля интеллекта заставят даже непрограмиста положительно взглянуть на методику решения задач». - Кори Доктороу, второй редактор Boing Boing, писатель-фантаст «У меня такое чувство, словно я прочитал сразу полтонны книг». - Уорд Каннингем, изобретатель Wiki «Это одна из немногих книг по программированию, которую я считаю незаменимой (а я к этой категории причисляю книг десять, не более)». - Дэвид Гелернтер, профессор по компьютерным технологиям, Йельский университет «Я смеялся, я плакал, эта книга тронула меня». - Дэниел Стейнберг, старший редактор java.net «Не могу представить себе лучших экскурсоводов, чем Эрик и Элизабет». - Мико Мацумура, вице-президент отдела маркетинга в Hazelcast, бывший ведущий специалист по Java, Sun Microsystems «Я буквально влюблен в эту книгу. Я даже поцеловал ее на глазах у жены». - Сатиш Кумар «Визуальный подход и последовательное изложение - лучший способ изучения этого материала...» - Дэнни Гудман, автор книги Dynamic HTML: The Definitive Guide «В отличие от многих невразумительных книг по программированию, насыщенных техническим жаргоном, руководства серии Head First jQuery помогают новичкам создавать их первые страницы jQuery на простом и доступном уровне». - Линдси Скурас, юрист и программист-самоучка О других книгах серии Head First «Очевидно, Эрик и Элизабет знают свое дело. Интернет-технологии становятся все более сложными, и творческое создание веб-страниц начинает играть все более важную роль. Элегантная архитектура занимает центральное место в каждой главе, каждая концепция передается с равной дозой прагматизма и остроумия». - Кен Голдстейн, бывший директор Shop.com и автор книги This is Rage: A Novel of Silicon; Valley and Other Madness «Книга Изучаем HTML, XHTML и CSS представляет собой тщательно проработанное современное руководство по дальновидным практикам в области разметки и представления веб-страниц. Авторы предвидят, какие моменты могут вызвать у читателя замешательство, и своевременно разъясняют их. Использованный подход, в основе которого лежат обилие наглядных примеров и последовательность изложения, является оптимальным для читателя: он будет вносить небольшие изменения и наблюдать итоговый эффект в браузере, что позволит разобраться в назначении каждого нового элемента». - Дэнни Гудмен, автор книги Динамический HTML: подробное руководство» (Dynamic HTML: The Definitive Guide) «Книга Изучаем HTML, XHTML и CSS с самого начала создает у читателя ощущение, что весь процесс обучения окажется простым и увлекательным. Освоение HTML при правильном объяснении не сложнее изучения основ родного языка, при этом авторы проделали отличную работу и приводят наглядные примеры по каждой концепции». - Майк Дэвидсон, президент и исполнительный директор Newsvine, Inc «Вместо изложения материала в стиле традиционных учебников Программируем для iPhone и iPad предлагает читателю живую, увлекательную и даже приятную методику обучения программированию для iOS. Материал подобран умело и качественно: в книге рассматриваются многие ключевые технологии, включая Core Data, и даже такие важные аспекты, как проектирование интерфейса. И где еще можно прочитать, как UIWebView и UITextField беседуют у камина?» - Шон Мерфи, проектировщик и разработчик приложений для iOS «Книга Программируем для iPhone и iPad объясняет принципы разработки приложений iOS с самого начала. Основные изменения по сравнению с первым изданием относятся к iOS 4, Xcode 4 и написанию приложений для iPad. Благодаря пошаговым описаниям с визуальным стилем изложения материала эта книга становится отличным средством изучения программирования для iPhone и iPad во всех аспектах, от простейших до нетривиальных». - Рич Розен, программист и соавтор книги Mac OS X for Unix Geeks ББК 32.988-02-018.1 УДК 004.43 Ф88 Ф88 Фримен Э., Робсон Э. Изучаем программирование на JavaScript. - СПб.: Питер, 2015. - 640 с.: ил. - (Серия «Head First O’Reilly»). ISBN 978-5-496-01257-7 Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком программирования - JavaScript! С помощью этой книги вы узнаете все о языке JavaScript: от переменных до циклов. Вы поймете, почему разные браузеры по-разному реагируют на код и как написать универсальный код, поддерживаемый всеми браузерами. Вам станет ясно, почему с кодом JavaScript никогда не придется беспокоиться о перегруженности страниц и ошибках передачи данных. Не пугайтесь, даже если ранее вы не написали ни одной строчки кода, - благодаря уникальному формату подачи материала эта книга с легкостью проведет вас по всему пути обучения: от написания простейшего скрипта до создания сложных веб-проектов, которые будут работать во всех современных браузерах. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O’Reilly в ряду множества скучных книг, посвященных программированию. 12+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.988-02-018.1 УДК 004.43 Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. ISBN 978-1449340131 англ. ISBN 978-5-496-01257-7 © Authorized Russian translation of the English edition of Head First JavaScript Programming, 1st Edition (ISBN 9781449340131) © 2014 Eric Freeman, Elisabeth Robson. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same © Перевод на русский язык ООО Издательство «Питер», 2015 © Издание на русском языке, оформление ООО Издательство «Питер», 2015 Посвящается JavaScript - ты не родился в благополучной семье, но превзошел все языки, которые пытались конкурировать с тобой в браузерах. авторы Элизабет Робсон Авторы книги ен Эрик Фрим Эрик, по словам одного из создателей серии Head First - «одна из редких личностей, хорошо разбирающихся в языке, практике и культуре самых разных областей - технохипстер, вице-президент, инженер, аналитик». Почти десять лет Эрик отработал на руководящей должности - технического директора Disney Online & Disney.com в компании The Walt Disney Company. Сейчас Эрик отдает свое время WickedlySmart - молодой компании, которую он создал совместно с Элизабет. Эрик - специалист по компьютерным технологиям, он занимался исследованиями вместе с Дэвидом Гелернтером в Йельском университете. Его диссертация стала фундаментальным трудом в области интерфейсов, реализующих метафору рабочего стола, а также первой реализацией потоков активности - концепции, разработанной им совместно с Гелернтером. В свободное время Эрик серьезно занимается музыкой; последний проект Эрика - Immersion Station, - созданный вместе со Стивом Роучем, можно найти в iPhone App Store. Эрик живет с женой и дочерью на острове Бейнбридж. Его дочь часто заглядывает в музыкальную студию Эрика, чтобы поиграть с синтезаторами и генераторами аудиоэффектов. Пишите Эрику по адресу [email protected] или посетите его сайт http://ericfreeman.com. 8 Элизабет - программист, писатель и преподаватель. Она влюблена в свою работу еще со времени учебы в Йельском университете, где она получила степень магистра в области компьютерных технологий. Элизабет уже давно занимается Интернетом; она участвовала в создании популярного сайта Ada Project - одного из первых сайтов, помогающих женщинам найти информацию о работе и образовании в области компьютерных технологий. Она стала одним из учредителей WickedlySmart - фирмы, работающей в области интернет-образования на базе веб-технологий. Здесь она создает книги, статьи, видеокурсы и т. д. На должности директора по специальным проектам в O’Reilly Элизабет разрабатывала семинары и курсы дистанционного обучения. Так проявилась ее страсть к созданию учебных курсов, помогающих людям разобраться в новых технологиях. До прихода в O’Reilly Элизабет работала в The Walt Disney Company, где руководила исследованиями и разработками в сфере цифровых мультимедийных технологий. Когда Элизабет не сидит за компьютером, она ходит в походы, занимается велоспортом и греблей или готовит вегетарианские блюда. Вы можете написать Элизабет по адресу beth@ wickedlysmart.com или посетить ее блог http:// elisabethrobson.com. оглавление Содержание (сводка) 1 2 3 4 5 6 7 8 9 10 11 12 13 Введение Первое знакомство с JavaScript. В незнакомых водах Настоящий код. Следующий шаг Знакомство с функциями. Функции для всех Наведение порядка в данных. Массивы Знакомьтесь: объекты. Поездка в Объектвиль Взаимодействие с веб-страницей. Модель DOM Типы, равенство, преобразования и все такое. Серьезные типы Все вместе. Построение приложения Асинхронное программирование. Обработка событий Первоклассные функции. Функции без ограничений Анонимные функции, область действия и замыкания. Серьезные функции Нетривиальное создание объектов. Создание объектов Использование прототипов. Сильные объекты 25 37 79 113 157 203 257 291 341 403 449 495 539 579 Содержание (настоящее) Введение Ваш мозг и JavaScript. Вы учитесь - готовитесь к экзамену. Или пытаетесь освоить сложную техническую тему. Ваш мозг пытается оказать вам услугу. Он старается сделать так, чтобы на эту очевидно несущественную информацию не тратились драгоценные ресурсы. Их лучше потратить на что-нибудь важное. Так как же заставить его изучить JavaScript? Для кого написана эта книга Мы знаем, о чем вы думаете Эта книга для тех, кто хочет учиться Метапознание: наука о мышлении 24 25 26 27 Вот что сделали МЫ: Что можете сделать ВЫ, чтобы заставить свой мозг повиноваться Примите к сведению Научные редакторы Благодарности 28 29 30 33 34 9 оглавление 1 В незнакомых водах JavaScript открывает фантастические возможности. JavaScript, основной язык программирования Всемирной паутины, позволяет определять расширенное поведение в веб-страницах. Забудьте о сухих, скучных, статичных страницах, которые просто занимают место на экране, - с JavaScript вы будете взаимодействовать с пользователями, реагировать на события, получать и использовать данные из Интернета, выводить графику... и многое, многое другое. При хорошем знании JavaScript вы сможете даже программировать совершенно новое поведение на своих страницах. И не сомневайтесь - ваши знания будут востребованы. Сейчас JavaScript не только является одним из самых популярных языков программирования, но и поддерживается всеми современными (и многими несовременными) браузерами; более того, появились встроенные реализации JavaScript, существующие отдельно от браузеров. А впрочем, хватит разговоров. Пора браться за дело! CSS HTML Браузер JS 10 первое знакомство с javascript Как работает JavaScript 38 Как пишется код JavaScript 39 Как включить код JavaScript в страницу 40 JavaScript, ты проделал длинный путь, детка... 42 Как создаются команды 46 Переменные и значения 47 Осторожно, ключевые слова! 48 Поаккуратнее с выражениями! 51 Многократное выполнение операций 53 Как работает цикл while 54 Принятие решений в JavaScript 58 А если нужно принять МНОГО решений... 59 Привлекайте пользователя к взаимодействию со страницей 61 Близкое знакомство с console.log 63 Как открыть консоль 64 Пишем серьезное приложение на JavaScript 65 Как добавить код в страницу? (считаем способы) 68 Разметка и код: пути расходятся 69 оглавление 2 настоящий код Следующий шаг Вы уже знаете, что такое переменные, типы, выражения... и так далее. Вы уже кое-что знаете о JavaScript. Более того, знаний достаточно для того, чтобы начать писать настоящие программы, которые делают что-то интересное, которыми кто-то будет пользоваться. Правда, вам не хватает практического опыта написания кода, и мы прямо сейчас начнем решать эту проблему. Как? А просто возьмемся за написание несложной игры, полностью реализованной на JavaScript. Задача масштабная, но мы будем двигаться к цели постепенно, шаг за шагом. Итак, беремся за дело, а если вам Начало вдруг захочется использовать нашу разработку в своих проектах - мы не против, распоряжайтесь кодом, как считаете нужным. Подготовка Получение данных от пользователя промах Проверка результата попадание корабль потоплен Отметить: корабль потоплен Вывод счета/ оценки Игра закончена Отметить: попадание Давайте реализуем игру «Морской бой» 80 Первый заход... 80 Начнем с проектирования 81 Разбираем псевдокод 83 Стоп! Прежде чем идти дальше, вспомните про HTML! 85 Пишем код упрощенной версии «Морского боя» 86 Переходим к реализации логики 87 Как работает функция prompt 89 Проверка на попадание 90 Добавление кода проверки попадания 93 Вывод данных после игры 94 Реализация логики готова! 96 Немного о контроле качества 97 А нельзя ли покороче... 101 Упрощенный «Морской бой» почти готов 102 Как получить случайную позицию 103 Всемирно известный рецепт генерирования случайных чисел 103 Возвращаемся к контролю качества 105 Поздравляем, вы создали свою первую программу на JavaScript! Теперь пара слов о повторном использовании кода 107 11 оглавление 3 12 знакомство с функциями Функции для всех В этой главе вы овладеете своей первой супер­способностью. ы уже кое-что знаете о программировании; пришло время сделать следующий В шаг и освоить работу с функциями. Функции позволяют писать код, который может повторно использоваться в разных ситуациях; код, существенно более простой в сопровождении; код, который можно aбстрагировать и присвоить ему простое имя, чтобы вы могли забыть о рутинных подробностях и заняться действительно важными делами. Вы увидите, что функции не только открывают путь к мастерству программиста, но и играют ключевую роль в стиле программирования JavaScript. В этой главе мы начнем с основ: механики и всех тонкостей работы функций, а потом в оставшейся части книги будем совершенствовать ваши навыки работы с функциями. Итак, начнем с азов... прямо сейчас. Так чем плох этот код? 115 Кстати, а вы когда-нибудь слышали о ФУНКЦИЯХ? 117 Хорошо, но как все это работает? 118 Что можно передать функции? 123 В JavaScript используется передача по значению 126 Эксперименты с функциями 128 А еще функции могут возвращать значения 129 Пошаговое выполнение функции с командой return 130 Глобальные и локальные переменные 133 Область действия локальных и глобальных переменных 135 Короткая жизнь переменных 136 Не забывайте объявлять локальные переменные! 137 оглавление 4 наведение порядка в данных Массивы 0 60 50 1 2 50 52 3 60 54 4 5 58 6 7 54 8 54 9 58 JavaScript может работать не только с числами, строками и логическими значениями. До настоящего момента мы работали исключительно с примитивами - простыми строками, числами и логическими значениями (например, «Fido», 23 и true). С примитивными типами можно сделать многое, но в какой-то момент возникнет необходимость в расширенных данных для представления всех позиций в корзине покупок, всех песен в плейлисте, группы звезд и их звездных величин или целого каталога продуктов. Подобные задачи требуют более серьезных средств. Типичным инструментом для представления таких однородных данных является массив JavaScript. В этой главе вы узнаете, как помещать данные в массив, передавать их и работать с ними. В последующих главах будут рассмотрены другие способы структурирования данных, но начнем мы с массивов. Вы нам поможете? 158 Как представить набор значений в JavaScript 159 Как работают массивы 160 Сколько же элементов в массиве? 162 Генератор Красивых Фраз 164 Тем временем в фирме Bubbles-R-Us... 167 Как перебрать элементы массива 170 Но постойте, существует и более удобный способ перебора! 172 Что, опять?.. Нельзя ли покороче? 178 Доработка цикла for с оператором постфиксного увеличения 179 Создание пустого массива (и добавление элементов) 183 А вот и наши победители... 187 Краткий обзор кода... 189 Работа над функцией printAndGetHighScore 190 Рефакторинг кода с определением функции printAndGetHighScore 191 А теперь все вместе... 193 13 оглавление 5 14 знакомьтесь: объекты Поездка в Объектвиль До настоящего момента мы использовали примитивы и массивы. И при этом применялась методология процедурного про- граммирования с простыми командами, условиями, циклами for/while и функциями. Такой подход был далек от принципов объектно-ориентированного программирования. Собственно, он вообще не имел ничего общего с объектно-ориентированным программированием. Мы использовали объекты время от времени (причем вы об этом даже не знали), но еще не написали ни одного собственного объекта. Пришло время покинуть скучный процедурный город и заняться созданием собственных объектов. В этой главе вы узнаете, почему объекты сильно улучшают нашу жизнь - во всяком случае в области программирования. Так и знайте: привыкнув к объектам, вы уже не захотите возвращаться обратно. Да, и не забудьте прислать открытку, когда обживетесь. Кто-то сказал «объекты»?! 204 Подробнее о свойствах... 205 Как создать объект 207 Что такое «объектно-ориентированный подход»? 210 Как работают свойства 211 Как объект хранится в переменной? Любознательные умы интересуются... 216 Сравнение примитивов с объектами 217 Объекты способны на большее... 218 Предварительная проверка 219 Проверка шаг за шагом 220 Еще немного поговорим о передаче объектов функциям 222 Ведите себя прилично! И объекты свои научите... 228 Усовершенствование метода drive 229 Почему метод drive не знает о свойстве started? 232 Как работает this 234 Как поведение влияет на состояние 240 Состояние влияет на поведение 241 Поздравляем с первыми объектами! 243 Представьте, вас окружают сплошные объекты! (и они упрощают вашу работу) 244 оглавление 6 взаимодействие с веб-страницей Модель DOM Вы значительно продвинулись в изучении JavaScript. Ф актически вы из новичка в области сценарного программирования превратились в... программиста. Впрочем, кое-чего не хватает: для полноценного использования ваших навыков JavaScript необходимо уметь взаимодействовать с веб-страницей, в которой располагается ваш код. Только в этом случае вы сможете писать динамические страницы, которые реагируют на действия пользователя и обновляются после загрузки. Как взаимодействовать со страницей? Через объектную модель документа DOM (Document Object Model). В этой главе мы рассмотрим DOM и общие принципы работы с этой моделью из JavaScript для расширения возможностей страницы. Привет, я браузер. Я читаю страницу и строю ее представление в модели DOM. В предыдущей главе мы предложили вам одну головоломку на «вскрытие кода» 258 Что же делает этот код? 259 Как JavaScript на самом деле взаимодействует со страницей 261 Как приготовить модель DOM 262 DOM: первые впечатления 263 Получение элемента методом getElementById 268 Что именно мы получаем от DOM? 269 В поисках внутреннего HTML 270 Что происходит при внесении изменений в DOM 272 И не вздумайте выполнять мой код до того, как страница будет загружена! 277 «Обработчик события» или «функция обратного вызова» 278 Как задать атрибут методом setAttribute 283 Веселье с атрибутами продолжается! (значения атрибутов можно ЧИТАТЬ) 284 И не забывайте, что getElementById тоже может вернуть null! 284 Каждый раз, когда вы запрашиваете некоторое значение, стоит убедиться в том, что вы получили то, что просили... 284 Что еще можно сделать с моделью DOM? 286 document html head body p id =”greenplanet” p id =”redplanet” p id =”blueplanet” All is well Nothing to report All systems A-OK 15 оглавление 7 16 типы, равенство, преобразования и все такое Серьезные типы Настало время серьезно поговорить о типах.Одна из замечательных особенностей JavaScript заключается в том, что начинающий может достаточно далеко продвинуться, не углубляясь в подробности языка. Но чтобы действительно овладеть языком, получить повышение по работе и заняться тем, чем действительно стоит заниматься, нужно хорошо разбираться в типах. Помните, что мы говорили о JavaScript, - что у этого языка не было такой роскоши, как академическое определение, прошедшее экспертную оценку? Да, это правда, но отсутствие академической основы не помешало Стиву Джобсу и Биллу Гейтсу; не помешало оно и JavaScript. Это означает, что система типов JavaScript... ну, скажем так - не самая продуманная, и в ней найдется немало странностей. Но не беспокойтесь, в этой главе мы все разберем, и вскоре вы научитесь благополучно обходить все эти неприятные моменты с типами. Истина где-то рядом... 292 Будьте осторожны: undefined иногда появляется совершенно неожиданно... 294 Как использовать null 297 Работа с NaN 299 А дальше еще удивительнее 299 Мы должны вам признаться... 301 Оператор проверки равенства (также известный как ==) 302 Как происходит преобразование операндов (все не так страшно, как может показаться) 303 Как проверить строгое равенство 306 Еще больше преобразований типов... 312 Как проверить два объекта на равенство 315 Псевдоистина где-то рядом... 317 Что JavaScript считает «псевдоложью» 318 Тайная жизнь строк 320 Строка может выглядеть и как примитив, и как объект 321 Краткий обзор методов (и свойств) строк 323 Битва за кресло 327 оглавление 8 все вместе Построение приложения Подготовьте свой инструментарий к работе. Да, ваш инстру- ментарий - ваши новые навыки программирования, ваше знание DOM и даже некоторое знание HTML и CSS. В этой главе мы объединим все это для создания своего первого полноценного веб-приложения. Довольно примитивных игр с одним кораблем, который размещается в одной строке. В этой главе мы построим полную версию: большое игровое поле, несколько кораблей, ввод данных пользователем прямо на веб-странице. Мы создадим структуру страницы игры в разметке HTML, применим визуальное оформление средствами CSS и напишем код JavaScript, определяющий поведение игры. Приготовьтесь: в этой главе мы займемся полноценным, серьезным программированием и напишем вполне серьезный код. На этот раз мы построим НАСТОЯЩУЮ игру «Морской бой» 342 Возвращаемся к HTML и CSS 343 Создание страницы HTML: общая картина 344 Добавление стилевого оформления 348 Использование классов hit и miss 351 Как спроектировать игру 353 Реализация представления 355 Как работает метод displayMessage 355 Как работают методы displayHit и displayMiss 357 Модель 360 Как мы будем представлять данные кораблей 362 Реализация объекта модели 365 Подготовка метода fire 366 Реализация контроллера 373 E Обработка выстрела 374 F Планирование кода... 375 B C D Корабль 1 A Корабль 2 Корабль 3 G 0 1 2 3 4 HIT 5 6 Реализация метода parseGuess 376 Подсчет и обработка выстрелов 379 Как связать обработчик событий с кнопкой Fire 383 Передача данных контроллеру 384 Как размещать корабли 388 Метод generateShip 389 Генерирование начальной позиции нового корабля 390 Завершение метода generateShip 391 17 оглавление 9 18 асинхронное программирование Обработка событий В этой главе вам предстоит подняться на принципиально новый уровень. До настоящего момента мы писали код, который обычно выполняется сверху вниз. Конечно, в нем использовались функции, объекты и методы, но выполнение шло по заранее намеченной колее. Жаль, что нам приходится сообщать такие новости во второй половине книги, но такая структура кода не характерна для JavaScript. Большая часть кода JavaScript пишется для обработки событий. Каких событий? Да любых. Пользователь щелкает на странице, данные поступают из сети, в брау­ зере срабатывает таймер, в DOM происходят изменения... Это далеко не полный список. Более того, в браузере постоянно происходят события, которые в основном остаются незамеченными. В этой главе мы пересмотрим свой подход к программированию и узнаем, для чего же нужно писать код, реагирующий на события. Что такое «событие»? 405 Что такое «обработчик события»? 406 Как создать первый обработчик событий 407 Тест-драйв 408 Как разобраться в событиях? Написать игру, конечно! 410 Реализация игры 411 Тест-драйв 412 Добавим несколько изображений 416 Теперь нужно назначить один обработчик всем свойствам onclick всех изображений 417 Как использовать один обработчик для всех изображений 418 Как работает объект события 421 Работаем с объектом события 423 Тест-драйв: объект события и источник 424 Очереди и события 426 Еще больше событий 429 Как работает setTimeout 430 Завершение кода игры 434 Тест-драйв таймеров 435 оглавление 10 первоклассные функции Функции без ограничений Изучайте функции и блистайте. В каждом ремесле, искусстве и дисциплине есть ключевой принцип, который отличает игроков «среднего звена» от настоящего профессионала, - и когда речь заходит о JavaScript, признаком профессионализма является хорошее понимание функций. Функции играют фундаментальную роль в JavaScript, и многие приемы, применяемые при проектировании и организации кода, основаны на хорошем знании функций и умении использовать их. Путь изучения функций на этом уровне интересен и непрост, так что приготовьтесь... Эта глава немного напоминает экскурсию по шоколадной фабрике Вилли Вонка - во время изучения функций JavaScript вы увидите немало странного, безумного и замечательного. Двойная жизнь ключевого слова function 450 Объявления функций и функциональные выражения 451 Разбор объявления функции 452 Что дальше? Браузер выполняет код 453 Двигаемся вперед... Проверка условия 454 И напоследок... 455 Функции как значения 459 Функции как полноправные граждане JavaScript 462 Полеты первым классом 463 Написание кода для обработки и проверки пассажиров 464 Перебор пассажиров 466 Передача функции другой функции 467 Тест-драйв... вернее, полет 467 Возвращение функций из функций 470 Код заказа напитков 471 Код заказа напитков: другой подход 472 Постойте, одного напитка недостаточно! 473 Заказ напитков с использованием первоклассной функции 474 Тест-драйв-полет 475 «Веб-кола» 477 Как работает метод массивов sort 479 Все вместе 480 Тем временем в «Веб-коле» 481 Тест-драйв сортировки 482 19 оглавление 11 Вот черт! Джуди снова права. 20 анонимные функции, область действия и замыкания Серьезные функции Мы узнали много нового о функциях, но это далеко не всё.В этой главе мы пойдем дальше и разберемся в темах, которыми обычно занимаются профессионалы. Вы научитесь действительно эффективно работать с функциями. Глава будет не слишком длинной, но с довольно интенсивным изложением материала, так что к концу главы выразительность вашего кода JavaScript превзойдет все ожидания. Вы также будете готовы к тому, чтобы взяться за анализ кода коллеги или заняться изучением библиотеки JavaScript с открытым кодом, потому что мы заодно изучим некоторые распространенные идиомы и соглашения, связанные с использованием функций. А если вы никогда не слышали об анонимных функциях и замыканиях, то это самое подходящее место для знакомства! Погодите секунду... Джуди не упоминала о замыканиях? Кажется, они как-то связаны с тем, что мы делаем. Давайте-ка изучим эту тему и поквитаемся с ней. Посмотрим на функции с другой стороны... 496 Как использовать анонимную функцию? 497 Когда определяется функция? Здесь возможны варианты... 503 Что произошло? Почему функция fly не определена? 504 Как создаются вложенные функции 505 Как вложение влияет на область действия 506 В двух словах о лексической области действия 508 Чем интересна лексическая область действия 509 Снова о функциях 511 Вызовы функций (снова) 512 Что такое «замыкание»? 515 Как замкнуть функцию 516 Использование замыканий для реализации счетчика 518 Тест-драйв волшебного счетчика 519 Взгляд за кулисы 519 Создание замыкания с передачей функционального выражения в аргументе 521 Замыкание содержит непосредственное окружение, а не его копию 522 Создание замыкания в обработчике события 523 Программа без замыкания 524 Программа с замыканием 524 Тест-драйв счетчика нажатий 525 Как работает замыкание 526 оглавление 12 нетривиальное создание объектов Создание объектов До настоящего момента мы создавали объекты вручную.Для каждого объекта использовался объектный литерал, который задавал все без исключения свойства. Для небольших программ это допустимо, но для серьезного кода потребуется что-то получше, а именно конструкторы объектов. Конструкторы упрощают создание объектов, причем вы можете создавать объекты по единому шаблону - иначе говоря, конструкторы позволяют создавать серии объектов, обладающих одинаковыми свойствами и содержащих одинаковые методы. Код, написанный с использованием конструкторов, получается гораздо более компактным и снижает риск ошибок при создании большого количества объектов. Уверяем, что после изучения этой главы вы будете пользоваться конструкторами так, словно занимались этим всю сознательную жизнь. Создание объектов с использованием объектных литералов 540 О сходстве и различии между объектами 541 Конструкторы 543 Как создать конструктор 544 Как использовать конструктор 545 Как работают конструкторы 546 В конструкторы также можно добавить методы 548 Опасная зона 551 Техника безопасности 551 Даешь массовое производство! 554 Тест-драйв на новых машинах 556 Не спешите расставаться с объектными литералами 557 Преобразование аргументов в объектный литерал 558 Преобразование конструктора Car 559 Экземпляры 561 Даже сконструированные объекты могут содержать независимые свойства 564 Конструкторы в реальном мире 566 Объект Array 567 Другие встроенные объекты 569 21 оглавление 13 использование прототипов Сильные объекты Научиться создавать объекты - только начало.Пришло время «накачать мышцы» - изучить расширенные средства определения отношений между объектами и организовать совместное использование кода. Кроме того, нам понадобятся механизмы расширения существующих объектов. Иначе говоря, нам нужно расширить свой инструментарий работы с объектами. В этой главе вы увидите, что в JavaScript реализована достаточно мощная объектная модель, но она немного отличается от модели традиционных объектно-ориентированных языков. Вместо типичных объектно-ориентированных систем на базе классов JavaScript использует модель прототипов - объектов, способных наследовать и расширять поведение других объектов. Какая в этом польза для вас? Вскоре узнаете. Итак, за дело... Object toString() hasOwnProperty() // and more 581 но насколько эффективно? 582 Дублирование методов действительно создает проблемы? 584 Что такое «прототип»? 585 Наследование через прототип 586 Как работает наследование 587 species: "Canine" Переопределение прототипа 589 bark() run() wag() Как получить прототип 591 Как создать прототип 592 Dog Prototype Переопределение унаследованного метода 594 О динамических прототипах 598 Более интересная реализация метода sit 600 ShowDog Prototype Еще раз: как работает свойство sitting 601 league: “Webville” С чего начать проектирование объектов 605 Создание цепочки прототипов 607 Как работает наследование в цепочке прототипов 608 stack() bait() gait() groom() ShowDog name: “Scotty” breed: “Scottish Terrier” weight: 15 handler: “Cookie” 22 Представление объектов на диаграммах Снова о конструкторах: код используется повторно, Анализ результатов 617 Наводим чистоту 618 Еще немного усилий 619 Вызов Dog.call шаг за шагом 620 Применяем наследование с пользой... расширяя встроенный объект 626 Теория великого объединения Всего JavaScript 628 Объекты для лучшей жизни 628 Собираем все вместе 629 как пользоваться этой книгой Введение Не могу поверить, что они включили такое в книгу по программированию на JavaScript! ный на насущ ответим ы м ОЕ е К А ел азд чили Т В этом р они вклю у ем cript?» ч S о a п v Так ю на Ja и н ва вопрос: « о р и м о програм в книгу п как работать с этой книгой Для кого написана эта книга? Если вы ответите «да» на все следующие вопросы: 1 У вас есть доступ к компьютеру с современным браузером и текстовым редактором? 2 Вы хотите изучить, запомнить, понять и научиться программировать на JavaScript, используя передовые приемы разработки и самые современные стандарты? 3 Вы предпочитаете оживленную беседу сухим, скучным академическим лекциям? ...то эта книга для вас. Под «современным браузером» мы пони маем обновленную версию Safari, Chrome, Firefox или IE версии 9 и вы ше. [Заметка от отдела продаж: вообще-то эта книга для любого, у кого есть деньги.] Кому эта книга не подойдет? Если вы ответите «да» на любой из следующих вопросов: 1 Вы абсолютно не разбираетесь в веб-программировании? Впервые слышите о HTML и CSS? В таком случае лучше начать с книги Изучаем HTML, XHTML и CSS - с ее помощью вы научитесь создавать веб-страницы, прежде чем браться за JavaScript. 2 Вы уже опытный веб-разработчик и ищете справочник? 3 Вы боитесь попробовать что-нибудь новое? Скорее пойдете к зубному врачу, чем наденете полосатое с клетчатым? Считаете, что книга, в которой объекты JavaScript изображены в виде человечков, серьезной быть не может? ...эта книга не для вас. 24 введение введение Мы знаем, о чем вы думаете «Разве серьезные книги по программированию такие?» «И почему здесь столько рисунков?» «Можно ли так чему-нибудь научиться?” Ваш м озг счи тает, что Э Т О важно. È ìû çíàåì, î ÷åì äóìàåò âàø ìîçã Мозг жаждет новых впечатлений. Он постоянно ищет, анализирует, ожидает чего-то необычного. Он так устроен, и это помогает нам выжить. Как наш мозг поступает со всеми обычными, повседневными вещами? Он всеми силами пытается оградиться от них, чтобы они не мешали его настоящей работе - сохранению того, что действительно важно. Мозг не считает нужным сохранять скучную информацию. Она не проходит фильтр, отсекающий «очевидно несущественное». Но как же мозг узнает, что важно? Представьте, что вы выехали на прогулку и вдруг прямо перед вами появляется тигр. Что происходит в вашей голове и теле? Активизируются нейроны. Вспыхивают эмоции. Происходят химические реакции. И тогда ваш мозг понимает... Замечательно. Еще 613 сухих, скучных страниц. мозг Ваш ает, г пола ТО ичто Эо не запом Конечно, это важно! Не забывать! н ж мо ть. А теперь представьте, что вы находитесь дома или в библиотеке - на в теплом, уютном месте, где тигры не водятся. Вы учитесь - готовитесь к экзамену. Или пытаетесь освоить сложную техническую тему, на которую вам выделили неделю... максимум десять дней. И тут возникает проблема: ваш мозг пытается оказать вам услугу. Он старается сделать так, чтобы на эту очевидно несущественную информацию не тратились драгоценные ресурсы. Их лучше потратить на что-нибудь важное. На тигров, например. Или на то, что к огню лучше не прикасаться. Или что на лыжах не стоит кататься в футболке и шортах. Нет простого способа сказать своему мозгу: «Послушай, мозг, я тебе, конечно, благодарен, но какой бы скучной ни была эта книга и пусть мой датчик эмоций сейчас на нуле, я хочу запомнить то, что здесь написано». дальше� 25 как работать с этой книгой чет учит Эта книга для тех, кто хо ься том не забыть. то-то» понять, а по «ч это о жн ну а ал ем? Снач йшим исследоваКак мы что-то узна очно. Согласно нове ат ст до не в кто фа побольше ия, для усвоения Затолк ать в гол ову психол огии обучен и гии ло ио об йр не знаем, как тивистики, кст на странице. Мы те ниям в области когни й то ос пр м че е, тся что-то больше материала требуе В отличие от других языков, работать. код JavaScript передается заставить ваш мозг st: пы серии Head Fir Основные принци непосредственно браузеру. тек ст, чше, чем обычный ка запоминается лу арм фо ин Наглядность. Графи тия ия ь воспр шает эффективност л иа тер и значительно повы ма о, тог е Веб-сервер Кром “Код найден, получите” ым исследований). , ции (до 89% по данн ается на рисунках ещ зм ра кст Те м. нятны становится более по тся. си но от он м к которы казали, что ие исследования по й) изложения. Недавн ль сти ый о формальных лекци рн ест во (вм зго Ра ожения материала изл але сск Ра сти %. ом рн 40 т во при разго овании достигае на итоговом тестир тов е ьта себ к зул ь ре тес ие ен оси улучш лекцию. Не отн Я считаю, что о того чтобы читать ест а вм, сед ию бе я тор на ис ль йте ате зыва внимание: заним код JavaScript Что привлечет ваше слишком серьезно. следует размещать я? в элементе . за столом или лекци ть атили не начнете напряга Теперь, когда вы обр читателя. Пока вы ие, будьте ь ман ел вни Активное участие тат ня Чи ме т. на де оизой и гол ове ничего не пр осторожнее со своим извилины, в вашей он должен ыми. те; енн ьта ем зул пер ре в ми н ьны ва ресо глобал должен быть заинте овладевать ировать выводы и ул рм фо, ачи зад решать имы упражнения А для этого необход новыми знаниями. задейство, в решении которых и каверзные вопросы ства. я мозга и разные чув ваны оба полушари My Playlist Kick’n Tunes

BT - Satellite: nice downbeat tune.

О я. сь! Эт внимания читател пите быстро-Привлечение (и сохранение) о р, о нь хочу изучить это Не т зится на мени ая каждому: «Я оче ком зна е а я, ци р р туа в Си иот обращает вн вии и ицы! ой странице». Мозг дейстзки стран но засыпаю на перв, неожиданное. ое у ьн ел р гат заг ое, странное, притя есное мание на интересн быть скучным. Интер й темы не обязано ско че ни тех й но ож Изучение сл стрее. узнается намного бы ре в значительной ме собность запоминать спо ша на что о. о, иям. Известн м небезразличн Обращение к эмоц оминаем то, что на реживания. Мы зап пе со го но ль на чем: речь идет и ио пр зависит от эмоц енты здесь ни ствуем. Нет, сантим чув -то что да крут!» при решении ког я а м, Мы запоминае терес и чувство «Д ин, во тст пы бо сь лю, удивление ете, что разбираете о таких эмоциях, как или когда вы понима й, но ож сл т таю счи ужающие задачи, которую окр ческого отдела. знайка Боб из техни все м че е, в теме лучш 26 введение введение Метапознание: наука о мышлении Если вы действительно хотите быстрее и глубже усваивать новые знания - задумайтесь над тем, как вы думаете. Учитесь учиться. Мало кто из нас изучает теорию метапознания во время учебы. Нам положено учиться, но нас редко этому учат. Как бы теперь заставить мой мозг все это запомнить.... Но раз вы читаете эту книгу, то, вероятно, вы хотите научиться писать программы на JavaScript, и по возможности быстрее. Вы хотите запомнить прочитанное, а для этого абсолютно необходимо сначала понять прочитанное. Чтобы извлечь максимум пользы из учебного процесса, нужно заставить ваш мозг воспринимать новый материал как Нечто Важное. Критичное для вашего существования. Такое же важное, как тигр. Иначе вам предстоит бесконечная борьба с вашим мозгом, который всеми силами уклоняется от запоминания новой информации. Как же УБЕДИТЬ мозг, что программирование на JavaScript не менее важно, чем тигр? Есть способ медленный и скучный, а есть быстрый и эффективный. Первый основан на тупом повторении. Всем известно, что даже самую скучную информацию можно запомнить, если повторять ее снова и снова. При достаточном количестве повторений ваш мозг прикидывает: «Вроде бы несущественно, но раз одно и то же повторяется столько раз... Ладно, уговорил». Быстрый способ основан на повышении активности мозга и особенно сочетании разных ее видов. Доказано, что все факторы, перечисленные на предыдущей странице, помогают вашему мозгу работать на вас. Например, исследования показали, что размещение слов внутри рисунков (а не в подписях, в основном тексте и т. д.) заставляет мозг анализировать связи между текстом и графикой, а это приводит к активизации большего количества нейронов. Больше нейронов - выше вероятность того, что информация будет сочтена важной и достойной запоминания. Разговорный стиль тоже важен: обычно люди проявляют больше внимания, когда они участвуют в разговоре, так как им приходится следить за ходом беседы и высказывать свое мнение. Причем мозг совершенно не интересует, что вы «разговариваете» с книгой! С другой стороны, если текст сух и формален, то мозг чувствует то же, что чувствуете вы на скучной лекции в роли пассивного участника. Его клонит в сон. Но рисунки и разговорный стиль - это только начало. дальше� 27 как работать с этой книгой Вот что сделали МЫ: Мы использовали рисунки, потому что мозг лучше воспринимает графику, чем текст. С точки зрения мозга рисунок стоит 1024 слова. А когда текст комбинируется с графикой, мы внедряем текст прямо в рисунки, так мозг работает эффективнее. Мы используем избыточность: повторяем одно и то же несколько раз, применяя разные средства передачи информации, обращаемся к разным чувствам - и все для повышения вероятности того, что материал будет закодирован в нескольких областях вашего мозга. Dog Prototype species: "Canine" bark() run() wag() ShowDog Prototype league: “Webville” stack() bait() gait() groom() ShowDog name: “Scotty” breed: “Scottish Terrier” weight: 15 handler: “Cookie” Мы используем концепции и рисунки несколько неожиданным образом, потому что мозг лучше воспринимает новую информацию. Кроме того, рисунки и идеи обычно имеют эмоциональное содержание, потому что мозг обращает внимание на биохимию эмоций. То, что заставляет нас чувствовать, лучше запоминается - будь то шутка, удивление или интерес. Мы используем разговорный стиль, потому что мозг лучше воспринимает информацию, когда вы участвуете в разговоре, а не пассивно слушаете лекцию. Это происходит и при чтении. В книгу включены многочисленные упражнения, потому что мозг лучше запоминает, когда вы что-то делаете. Мы постарались сделать их непростыми, но интересными - то, что предпочитает большинство читателей. Мы совместили несколько стилей обучения, потому что одни читатели предпочитают пошаговые описания, другие стремятся сначала представить «общую картину», а третьим хватает фрагмента кода. Независимо от ваших личных предпочтений полезно видеть несколько вариантов представления одного материала. Мы постарались задействовать оба полушария вашего мозга; это повышает вероятность усвоения материала. Пока одна сторона мозга работает, другая часто имеет возможность отдохнуть; это повышает эффективность обучения в течение продолжительного времени. А еще в книгу включены истории и упражнения, отражающие другие точки зрения. Мозг глубже усваивает информацию, когда ему приходится оценивать и выносить суждения. В книге часто встречаются вопросы, на которые не всегда можно дать простой ответ, потому что мозг быстрее учится и запоминает, когда ему приходится что-то делать. Невозможно накачать мышцы, наблюдая за тем, как занимаются другие. Однако мы позаботимся о том, чтобы усилия читателей были приложены в верном направлении. Вам не придется ломать голову над невразумительными примерами или разбираться в ложном, перенасыщенном техническим жаргоном или слишком лаконичном тексте. В историях, примерах, на картинках присутствуют люди - потому что вы тоже человек. И ваш мозг обращает на людей больше внимания, чем на неодушевленные предметы. Мы используем принцип 80/20. Если вы собираетесь стать крутым разработчиком JavaScript, только этой книгой вы не обойдетесь. В ней мы не пытаемся рассказывать обо всем - только о том, что действительно необходимо. 28 введение СТАНЬ браузером КЛЮЧЕВЫЕ МОМЕНТЫ Головоломки введение Что можете сделать ВЫ, чтобы заставить свой мозг повиноваться Мы свое дело сделали. Остальное за вами. Эти советы станут отправной точкой; прислушайтесь к своему мозгу и определите, что вам подходит, а что не подходит. Пробуйте новое. Вырежьте и прикрепит е на холодиль ник. 1 Не торопитесь. Чем больше вы поймете, тем меньше придется запоминать. 6 Просто читать недостаточно. Когда книга задает вам какой-то вопрос, не переходите к ответу. Представьте, что кто-то действительно задает вам вопрос. Чем глубже ваш мозг будет мыслить, тем скорее вы поймете и запомните материал. 7 2 Выполняйте упражнения, делайте заметки. Мы включили упражнения в книгу, но выполнять их за вас не собираемся. И не разглядывайте упражнения. Берите карандаш и пишите. Физические действия во время учения повышают его эффективность. 3 Читайте врезки. 4 Не читайте других книг, отложив эту перед сном. 5 Пейте воду. И побольше. Мозг лучше всего работает в условиях высокой влажности. Дегидратация (может наступить еще до того, как вы почувствуете жажду) снижает когнитивные функции. Речь активизирует другие участки мозга. Если вы пытаетесь что-то понять или получше запомнить, произнесите вслух. А еще лучше - попробуйте объяснить кому-нибудь другому. Вы будете быстрее усваивать материал и, возможно, откроете для себя что-то новое. Прислушивайтесь к своему мозгу. Следите за тем, когда ваш мозг начинает уставать. Если вы стали поверхностно воспринимать материал или забываете только что прочитанное, пора сделать перерыв. 8 Чувствуйте! 9 Творите! Это значит: читайте всё. Врезки - часть основного материала! Не пропускайте их. Часть обучения (особенно перенос информации в долгосрочную память) происходит после того, как вы закрываете книгу. Ваш мозг не сразу усваивает информацию. Если во время обработки поступит новая информация, часть того, что вы узнали ранее, может быть потеряна. Говорите вслух. Ваш мозг должен знать, что материал книги действительно важен. Переживайте за героев наших историй. Придумывайте собственные подписи к фотографиям. Поморщиться над неудачной шуткой все равно лучше, чем не почувствовать ничего. Попробуйте применить новые знания в своей повседневной работе. Просто сделайте хоть что-нибудь, чтобы приобрести практический опыт за рамками упражнений. Все, что для этого нужно, - это карандаш и подходящая задача... Задача, в которой использование JavaScript может принести пользу. 10 Спите. Чтобы научиться программировать, вы должны создать множество новых связей в мозгу. Спите чаще, это полезно. дальше� 29 как работать с этой книгой Примите к сведению Это учебник, а не справочник. Мы намеренно убрали из книги все, что могло бы помешать изучению материала, над которым вы работаете. И при первом чтении книги начинать следует с самого начала, потому что книга предполагает наличие у читателя определенных знаний и опыта. Мы описываем ХОРОШИЕ стороны JavaScript и предупреждаем о ПЛОХИХ. Язык программирования JavaScript не был рожден в академических кругах и не проходил стадию просвещенной экспертной оценки. Он пришел в этот мир из необходимости и вырос в суровой среде ранних браузеров. Предупреждаем: у JavaScript есть масса достоинств, но есть и другие, не столь замечательные стороны. Но в целом JavaScript - прекрасный язык для тех, кто умеет разумно пользоваться им. В этой книге мы научим вас эффективно использовать хорошие стороны, а также укажем на возможные ловушки и посоветуем, как их лучше обойти. Мы не пытаемся во всех подробностях описать все аспекты языка. JavaScript - достаточно обширная тема. Не стоит рассматривать эту книгу как справочник; это учебник, в котором не излагается все, что только можно узнать о JavaScript. Мы хотим научить вас азам JavaScript, чтобы вы могли взять любой старый справочник и сделать на JavaScript все, что захотите. Эта книга учит использованию JavaScript в браузерах. Браузер - не только наиболее типичная среда для выполнения кода JavaScript, но и самая удобная (у каждого есть компьютер с текстовым редактором и браузером, а для начала работы на JavaScript ничего большего и не понадобится). Выполнение JavaScript в браузере также означает мгновенный отклик; чтобы увидеть, как работает написанный вами код, достаточно переза­ грузить веб-страницу. Книга поощряет написание хорошо структурированного, удобочитаемого кода. Код должен быть написан так, чтобы он хорошо читался и был понятен другим людям, а также работал в браузерах, которые выйдут в следующем году. Он должен быть по возможности простым и прямолинейным, чтобы вы справились со своей задачей и могли перейти к другим делам. В этой книге мы научим вас писать простой, хорошо структурированный код, способный адаптироваться к будущим изменениям, - код, которым вы можете гордиться, убрать в рамку и повесить на стену. Мы рекомендуем использовать разные браузеры. Мы учим вас писать JavaScript, основанный на стандартах, и все же вы, скорее всего, столкнетесь с незначительными различиями в интерпретации JavaScript разными браузерами. Хотя мы проследили за тем, чтобы приводимый код работал во всех современных браузерах, и даже покажем пару приемов, обеспечивающих поддержку кода этими браузерами, советуем выбрать пару браузеров и тестировать в них код JavaScript. Так вы научитесь видеть различия между браузерами и создавать код JavaScript, который будет хорошо работать в разных браузерах со стабильными результатами. 30 введение введение Программирование - дело серьезное. Вам придется работать, иногда весьма напряженно. Если у вас уже есть опыт практического программирования, то вы знаете, о чем мы говорим. Если вы взялись за эту книгу после Изучаем HTML, XHTML и CSS, то учтите, что код, который вам придется писать здесь, выглядит... немного иначе. Программирование требует особого склада ума. Оно логично, порой крайне абстрактно и алгоритмично. Не волнуйтесь, мы постараемся сделать процесс изучения по возможности приятным для вашего мозга. Двигайтесь постепенно, полноценно питайтесь и побольше спите - и новые концепции уложатся у вас голове. Упражнения ОБЯЗАТЕЛЬНЫ. Упражнения являются частью основного материала книги. Одни упражнения способствуют запоминанию материала, другие помогают лучше понять его, третьи ориентированы на его практическое применение. Не пропускайте упражнения. Повторение применяется намеренно. У книг этой серии есть одна принципиальная особенность: мы хотим, чтобы вы действительно хорошо усвоили материал. И чтобы вы запомнили все, что узнали. Большинство справочников не ставит своей целью успешное запоминание, но это не справочник, а учебник, поэтому некоторые концепции излагаются в книге по нескольку раз. Примеры были сделаны по возможности компактными. Нашим читателям не нравится просматривать 200 строк кода в примерах, чтобы найти две действительно важные строки. Большинство примеров книги приводится в минимально возможном контексте, чтобы та часть, которую вы изучаете, была простой и наглядной. Не ждите, что все примеры будут хорошо отлажены или дописаны до конца - они сделаны в учебных целях и не всегда обладают полноценной функциональностью. Все файлы с примерами доступны в Интернете. Вы найдете их по адресу http://wickedlysmart.com/hfjs. Упражнения «Игры разума» не имеют ответов. В некоторых из них правильного ответа вообще нет, в других вы должны сами решить, насколько правильны ваши ответы (это является частью процесса обучения). В некоторых упражнениях «Игры разума» приводятся подсказки, которые помогут вам найти нужное направление. дальше� 31 как работать с этой книгой Мы часто приводим только код без разметки. После первой пары глав мы часто приводим только код JavaScript, предполагая, что он упакован в разметку HTML. Ниже приведена простая страница HTML, которая может использоваться с большей частью кода книги. Если где-то должна использоваться другая разметка HTML, мы вам об этом скажем: Your HTML Page Ваш код JavaScript обычно размещается здесь. Все содержимое веб-страницы размещается здесь. Не беспокойтесь; в начале книги мы все объясним. Примеры кода, поддержка и обсуждения Все необходимые сопроводительные материалы доступны на сайте http://wickedlysmart.com/hfjs. Здесь размещены примеры кода и дополнительные материалы, включая видеоролики. 32 введение введение Эти парни - просто молодцы; они оставались с нами на протяжении всего процесса рецензирования и делились бесценной подробной информацией обо всем! Научные редакторы ро ф Ст Джеф Исмаэль Мартин Bing Демиддел Фрэнк Д. Мур Альфред Дж. Спеллер Брюс Форкуш Хавь е Руэдас Спасибо всем участникам нашей бесподобной группы рецензирования! Эта книга прошла более тщательное рецензирование, чем любая из наших предыдущих книг. Более 270 человек, присоединившихся к нашей программе WickedlySmart Insiders, участвовали в вычитке и подвергали оперативному критическому анализу материалы книги в процессе написания. Система сработала лучше, чем мы ожидали, и повлияла практически на все аспекты книги. Выражаем свою искреннюю признательность всем участникам; благодаря вам книга стала намного лучше, чем могла бы быть. Научные редакторы, изображенные выше, представили особенно ценную информацию и внесли значительный вклад в работу над книгой. Кроме них нам помогали: Галина Орлова, Дж. Патрик Келли, Клаус-Петер Каль, Роб Клири, Ребекка Данн-Кран, Олаф Шенрих, Джим Купек, Мэтью М. Ханрахан, Рассел Аллин-Виллемс, Кристин Дж. Уилсон, Луи-Филипп Бретон, Тимо Глейзер, Шармен Грей, Ли Бекхэм, Майкл Мерфи, Дэйв Янг, Дон Смоллидж, Алан Русяк, Эрик Р. Лисински, Брент Фазекас, Сью Старр, Эрик (Оранжевые Штаны) Джонсон, Джесс Палмер, Манабу Каваками, Алан Макайвор, Алекс Келли, Ивонна Биксел Труон, Остин Трауп, Тим Уильямс, Дж. Альберт Боуден II, Род Шелтон, Нэнси ДеХейвен Холл, Сью Макги, Франсиско Дебс, Мириам Беркленд, Кристин Грекко, Эльхаджи Барри, Атанасиос Валсамакис, Питер Кейси, Дастин Уоллем и Робб Керри. дальше� 33 группа рецензирования Благодарности* Уважаемый Дэвид Пауэрс Мы также исключительно благодарны нашему уважаемому научному редактору Дэвиду Пауэрсу. По правде говоря, мы вообще не пишем без участия Дэвида - он слишком часто спасал нас от возможных неприятностей. Дэвид помогает нам (а вернее, заставляет нас) сделать книгу более содержательной и технически точной, а его вторая профессия комика-любителя оказывается полезной, когда мы пишем несерьезные части книги. Спасибо еще раз, Дэвид, - ты настоящий профессионал, и мы спокойнее спим ночами, зная, что книга прошла твой технический контроль. К издательству O’Reilly: Огромное, гигантское спасибо нашему редактору Меган Бланшетт, которая расчистила путь для этой Пусть эта улыбка не вводит вас книги, устранила все в заблуждение, этот человек - препятствия, терпенастоящий профессионал. ливо ждала и жерт­ вовала семейным досугом ради ее завершения. Кроме того, она помогает нам сохранить рассудок в наших отношениях с O’Reilly (а O’Reilly - в их отношениях с нами). Мы обожаем тебя и не дождемся следующего совместного проекта! Меган Бланшетт Еще один дружеский привет нашему главному редактору Майку Хендриксону, который активно продвигал эту книгу с самого начала. Спасибо, Майк; ни одна наша книга не вышла бы без твоего участия. Ты был нашим предводителем больше десяти лет, и мы любим тебя! *Большое количество благодарностей объясняется просто: мы проверяем теорию, согласно которой каждый упомянутый в разделе благодарностей купит хотя бы один экземпляр книги (а может, и больше) для родственников и знакомых. Если вы хотите, чтобы мы поблагодарили вас в нашей следующей книге, и у вас большая семья - пишите. 34 введение Майк Хендриксон введение Участникам из O’Reilly: Мы искренне благодарим всю группу O’Reilly: Мелани Ярбро, Боба Пфалера и Дэна Фоксмита, которые придали форму этой книге; Эду Стивенсону, Хьюджетт Бэрриер и Лесли Крэнделлу, которые руководили маркетингом, - мы оценили их нестандартный подход к делу. Спасибо Элли Волкхакузен, Рэнди Камеру и Карен Монтгомери за стильный дизайн обложки, который продолжает служить нам. Как обычно, спасибо Рэчел Монахан за бескомпромиссное редактирование (и за то, как она нас подбадривала), а Берту Бейтсу - за исключительно полезную обратную связь. дальше� 35 1 первое знакомство с javascript В незнакомых водах Залезай, водичка просто класс! Мы в общих чертах познакомимся с JavaScript, напишем первый код, запустим его и посмотрим, как он выполняется в браузере! JavaScript открывает фантастические возможности. JavaScript, основной язык программирования Всемирной паутины, позволяет определять расширенное поведение в веб-страницах. Забудьте о сухих, скучных, статичных страницах, которые просто занимают место на экране, - с JavaScript вы будете взаимодействовать с пользователями, реагировать на события, получать и использовать данные из Интернета, выводить графику... и многое, многое другое. При хорошем знании JavaScript вы сможете даже программировать совершенно новое поведение на своих страницах. И не сомневайтесь - ваши знания будут востребованы. Сейчас JavaScript не только является одним из самых популярных языков программирования, но и поддерживается всеми современными (и многими несовременными) браузерами; более того, появились встроенные реализации JavaScript, существующие отдельно от браузеров. А впрочем, хватит разговоров. Пора браться за дело! как работает javascript Как работает JavaScript Вы освоили создание структуры, контента, макета и стиля веб-страниц. Не пора ли добавить к ним поведение? В наше время страница, на которую можно только смотреть, никому не интересна. Хорошие страницы должны быть динамическими и интерактивными, и они должны по-новому взаимодействовать с пользователями. Именно для этого и нужен JavaScript. Для начала давайте посмотрим, какое место JavaScript занимает в экосистеме веб-страниц: HTML Вы уже знаете, что язык HTML (Hypertext Markup Language) используется для определения контента страниц, а также их структуры: абзацев, заголовков и разделов. JS 38  глава 1 CSS Браузер Вы знаете, что для отображения HTML-разметки используется технология каскадных таблиц стилей CSS (Cascading Style Sheets) - цвета, шрифты, границы, макет страницы... CSS определяет стиль оформ­ ления, отделенный от структуры страницы. Итак, знакомьтесь: JavaScript, родственник HTML и CSS. JavaScript умеет определять поведение веб-страниц. Нужно среагировать, когда пользователь нажимает кнопку «Распродажа заканчивается через 30 секунд!»? Быстро проверить содержимое текстового поля с важными данными? Загрузить сообщения из Твиттера и вывести их на странице? А может, хотите поиграть? На помощь приходит JavaScript. Вы сможете добавить к странице программный код, который будет выполнять вычисления, реагировать на события, рисовать, передавать данные, сигнализировать, обновлять информацию, изменять... Словом, любые динамические операции - всё это умеет делать JavaScript. первое знакомство с javascript Как пишется код JavaScript JavaScript занимает особое место в мире программирования. Как появляется типичная классическая программа? Вы пишете код, компилируете его, проводите компоновку и устанавливаете на компьютер. Язык JavaScript куда более гибок и динамичен. Программист включает код JavaScript прямо в страницу, а потом загружает ее в браузер. Далее браузер сам сделает все необходимое для выполнения написанного кода. Давайте повнимательнее разберемся с тем, как работает эта схема: CSS Icecream var x = 49; Icecream Flavors 49 flavors

All your favorite flavors!

Написание кода 1 Страница создается как обычно: с контентом HTML и стилевым оформлением CSS. На страницу добавляется код JavaScript. Как вы вскоре увидите, по аналогии с HTML и CSS все компоненты можно разместить в одном файле или же выделить код JavaScript в отдельный файл, который включается в страницу. Вскоре мы разберемся, какой способ лучше... Браузер Браузер Загрузка Выполнение 2 Откройте страницу в браузере. Обнаружив в странице код JavaScript, браузер сразу начинает разбирать его и готовить к выполнению. Как и в случае с HTML и CSS, если браузер обнаруживает ошибки в JavaScript, он старается продолжить чтение JavaScript, HTML и CSS. Браузер старается избежать ситуации, в которой пользователь не сможет увидеть запрошенную страницу. На будущее: браузер строит «объ ектную моде ль» страницы HTML , которая может ис пользоваться кодо м JavaScript. Просто запомните этот факт, мы еще к не му вернемся... 3 Браузер начинает выполнять код сразу, как только встречает его, и продолжает выполнять на всем протяжении жизненного цикла страницы. В отличие от ранних версий, современный JavaScript отличается высокой эффективностью, а благодаря изощренным методам компиляции код почти не уступает по скорости традиционным языкам программирования. html head title body script h1 h2 p em дальше 4   39 включение javascript в страницу Как включить код JavaScript в страницу Начнем с начала: чтобы продвинуться в изучении JavaScript, необходимо знать, как включить код в страницу. Как же это делается? Конечно, при помощи элемента ! Давайте возьмем скучную старую веб-страницу и определим для нее динамическое поведение в элементе . Пока не нужно задумываться над смыслом того, что мы включаем в элемент , - сейчас важнее понять, как вообще работает JavaScript. Стандартный заголовок HTML5 doctype, элементы и . Элемент выглядит вполне традиционно. Just a Generic Page В раздел страницы добавляется элемент script. setTimeout(wakeUpUser, 5000); function wakeUpUser() { } alert("Are you going to stare at this boring page forever?"); В нем записывается фрагмент кода JavaScript. Just a generic heading Еще раз: сейчас для нас не важно, как работает этот код. И все же... Посмотрите на него и предположите, что происходит в каждой из строк.

Not a lot to read about here. I"m just an obligatory paragraph living in an example in a JavaScript book. I"m looking for something to make my life more exciting.

Тест-драйв Введите код страницы и сохраните его в файле с именем “behavior.html”. Теперь загрузите страницу в браузере (перетащите файл в окно браузера или воспользуйтесь командой Файл > Открыть). Что делает наш код? Подсказка: чтобы это понять, нужно подождать пять секунд. 40  глава 1 первое знакомство с javascript РАССЛАБЬТЕ Вероятно, мы создаем код, который можно будет использовать в других местах, и присваиваем ему имя «wakeUpUser»? СЬ Только не волнуйтесь. Никто не ждет, что вы сразу начнете понимать JavaScript так, словно знаете его с детства. Сейчас достаточно представлять, на что похож JavaScript. Расслабляться тоже не стоит: нужно, чтобы ваш мозг заработал в полную силу. Помните код с предыдущей страницы? Давайте попробуем предположить, что происходит в каждой строке: -то образом отсчиsetTimeout(wakeUpUser, 5000); Здесь каким ь секунд? Подсказка: пят тывается унда. function wakeUpUser() { 1000 миллисекунд = 1 сек } alert("Are you going to stare at this boring page forever?"); Тут все понятно: выводится сообщение для пользователя. часто В: Задаваемые вопросы В: О: Я слышал, что JavaScript называют «игрушечным языком». Это правда? Мой друг работает с JavaScript в Photoshop... по крайней мере он так говорит. Это возможно? На первых порах JavaScript не отличался мощью, но затем его значимость возросла, и на расширение возможностей JavaScript были направлены значительные ресурсы (в том числе и умы лучших специалистов). Но знаете что? Еще до того, как JavaScript стал таким быстрым, он был замечательным. И как вы вскоре убедитесь, с ним можно сделать много интересного. Да, JavaScript - универсальный язык сценарного программирования и проникает во многие приложения, от графических редакторов до музыкальных программ, и даже в область серверного программирования. О: В: О: Язык JavaScript как-то связан с Java? Только по названию. Язык JavaScript создавался на пике популярности Java, и разработчики JavaScript удачно воспользовались этим обстоятельством. Оба языка заимствуют некоторые элементы синтаксиса из языков семейства C, но в остальном они имеют мало общего. В: Значит, JavaScript - лучший способ создания динамических страниц? А как насчет решений на базе Flash? О: Было время, когда технология Flash считалась предпочтительной для создания интерактивных и более динамичных веб-страниц, но с тех пор отрасль явно начала переходить на стандарт HTML5 с JavaScript. А в HTML5 JavaScript теперь является стандартным языком сценариев для веб-программирования. Сейчас значительные силы и средства тратятся на повышение скорости и эффективности JavaScript, а также на создание JavaScript API, расширяющих функциональность браузера. В: Вы говорите, что многие другие языки компилируются. Что это такое и почему этого нет в JavaScript? О: В традиционных языках программирования - C, C++ или Java - код компилируется перед выполнением. В процессе компиляции код преобразуется в представление, понятное для машины (и обычно оптимизированное по скорости выполнения). Сценарные языки интерпретируются, то есть браузер выполняет каждую строку JavaScript сразу же, как только встретит ее. Для сценарных языков производительность во время выполнения не так важна; они в большей степени ориентированы на построение прототипов, интерактивное программирование с максимальной гибкостью. С ранними версиями JavaScript так и было, по этой причине еще много лет скорость выполнения кода была довольно посредственной. Однако существовал промежуточный вариант: интерпретируемый язык, который компилируется «на ходу». Именно он был выбран разработчиками браузеров для современных реализаций JavaScript. По сути, в JavaScript вы пользуетесь всеми удобствами сценарных языков в сочетании с быстродействием компилируемого языка. Кстати говоря, в этой книге часто встречаются слова «интерпретировать», «вычислять» и «выполнять». Они могут различаться по смыслу в разных контекстах, но для наших целей фактически эквивалентны. дальше 4   41 история javascript JavaScript, ты проделал длинный путь, детка... JavaScript 1.0 Возможно, вы не помните Netscape, но он был первым настоящим разработчиком браузеров. В середине 1990-х на рынке шла яростная борьба (особенно со стороны Microsoft), и добавление новых интересных возможностей в браузер было исключительно важным делом. Для этого компания Netscape создала язык сценариев, который позволял любому желающему включить сценарный код в страницу. Так появился LiveScript. Скорее всего, вы никогда не слышали о LiveScript, потому что в то же время Sun Microsystems представила язык Java, и ее акции взлетели до заоблачного уровня. Почему бы не воспользоваться чужим успехом? Так LiveScript стал JavaScript. У этих языков нет ничего общего? Ну и что... А что же Microsoft? Вскоре за Netscape она создала собственный язык сценариев, который назвали... JScript. Он был как-то подозрительно похож на JavaScript. Так начались войны браузеров. 1995 42  глава 1 JavaScript 1.3 Между 1996 и 2000 годом язык JavaScript продолжал развиваться. Netscape передала JavaScript для стандартизации; так родился ECMAScript. Не слышали про ECMAScript? Просто знайте, что он является стандартным определением языка для всех реализаций JavaScript (в браузерах и без них). В это время разработчики продолжали бороться с JavaScript (войны браузеров были в самом разгаре), хотя использование JavaScript становилось все более распространенным. И хотя тонкие различия между JavaScript и JScript продолжали отравлять жизнь разработчиков, два языка со временем все больше походили друг на друга. JavaScript все еще пользовался репутацией «языка для дилетантов», но скоро все изменилось... 2000 JavaScript 1.8.5 Наконец, JavaScript достиг зрелости и заслужил признание профессиональных разработчиков! Хотя кто-то скажет, что все дело в появлении надежного стандарта (такого, как ECMAScript 5), который сейчас реализован во всех современных браузерах, на самом деле выходу JavaScript на профессио­ нальную арену в немалой степени способствовала компания Google. В 2005 году Google Maps показал всему миру, на что способен JavaScript при создании динамических веб-страниц. Лучшие умы из области программирования трудились над совершенствованием интерпретаторов JavaScript и повышением скорости выполнения кода. Синтаксис на протяжении эволюции JavaScript в целом изменился незначительно. Несмотря на всю суету, сопровождавшую его рождение, JavaScript оказался мощным и выразительным языком. 2012 первое знакомство с javascript Возьми в руку карандаш Посмотрите, как легко пишется код JavaScript var price = 28.99; var discount = 10; Вы еще не знаете JavaScript, но наверняка сможете хотя бы в общих чертах предположить, как работает его код. Взгляните на каждую строку и попробуйте догадаться, что она делает. Запишите свои ответы. Мы приводим один ответ, чтобы вам было проще взяться за дело. А если задача окажется непосильной, ответы приведены на следующей странице. Создать переменную price и присвоить ей значение 28.99. var total = price - (price * (discount / 100)); if (total > 25) { freeShipping(); } var count = 10; while (count > 0) { juggle(); count = count - 1; } var dog = {name: "Rover", weight: 35}; if (dog.weight > 30) { alert("WOOF WOOF"); } else { alert("woof woof"); } var circleRadius = 20; var circleArea = Math.PI * (circleRadius * circleRadius); дальше 4   43 решение упражнения Посмотрите, как легко пишется код JavaScript var price = 28.99; var discount = 10; var total = price - (price * (discount / 100)); if (total > 25) { freeShipping(); } var count = 10; while (count > 0) { juggle(); count = count - 1; } Возьми в руку карандаш Решение Вы еще не знаете JavaScript, но наверняка сможете хотя бы в общих чертах предположить, как работает его код. Взгляните на каждую строку и попробуйте догадаться, что она делает. Запишите свои ответы. Мы привели один ответ, чтобы вам было проще взяться за дело. Итак, ответы. Создать переменную price и присвоить ей значение 28.99. Создать переменную discount и присвоить ей значение 10. Вычислить цену со скидкой и присвоить переменной total. Сравнить переменную total и 25. Если переменная больше... ...выполнить фрагмент кода freeShipping. Конец команды if Создать переменную count и присвоить ей значение 10. Пока значение count остается больше 0... ...что-то сделать, а потом... ...уменьшить count на 1. Конец цикла while Создать переменную dog с атрибутами name и weight. var dog = {name: "Rover", weight: 35}; if (dog.weight > 30) { alert("WOOF WOOF"); } else { alert("woof woof"); } var circleRadius = 20; var circleArea = Math.PI * (circleRadius * circleRadius); 44  глава 1 Если атрибут weight больше 30... ...вывести на веб-странице сообщение “WOOF WOOF» В противном случае... ...вывести на веб-странице сообщение «woof woof» Конец команды if/else Создать переменную circleRadius и присвоить ей значение 20. Создать переменную с именем circleArea... ...и присвоить ей результат выражения (1256.6370614359173) первое знакомство с javascript Если не хочешь ограничиваться обычными статическими вебстраницами, без JavaScript тебе не обойтись. И это правда. Страницы, построенные на базе HTML и CSS, могут хорошо выглядеть. Но изучив JavaScript, вы сможете строить принципиально новые разновидности страниц. Более того, их будет правильнее рассматривать не как обычные страницы, а как А заодно приложения! и подзараЧто вы говорите? «Конечно, я это отлично знаю, иначе зачем бы мне читать эту книгу?» Вообще-то мы хотели воспользоваться возможностью и немного поговорить об изучении JavaScript. Если у вас уже имеется опыт работы на каком-нибудь языке программирования или языке сценариев, то вы примерно представляете, что вас ждет. Если до сегодняшнего дня вы ограничивались HTML и CSS, знайте: при изучении языка программирования вас ждет нечто принципиально новое. ботать! В HTML и CSS в основном выполняются декларативные операции. Допустим, вы объявляете, что некоторый текст абзаца или все элементы класса «sale» должны быть окрашены в красный цвет. JavaScript добавляет в страницу новое поведение, а для этого необходимо описать вычисления. Вам понадобятся средства для описания разнообразных операций: «вычислить счет игрока, сложив количество баллов», или «повторить следующее действие десять раз», или «когда пользователь нажмет эту кнопку, воспроизвести такой-то звуковой сигнал», или даже «зайти в Твиттер, получить последнее сообщение и разместить его на этой странице». Язык, необходимый для решения таких задач, сильно отличается от HTML и CSS. Давайте посмотрим, чем именно… дальше 4   45 команды javascript Как создаются команды При создании контента HTML вы обычно размечаете текст, определяя его структуру; для этого в текст добавляются элементы, атрибуты и значения: Mocha Caffe Latte

Espresso, steamed milk and chocolate syrup, just the way you like it.

При работе с HTML мы размечаем тек ст для опре деления структуры: на здесь у нас бу пример, «Так, дет крупный заголовок, а за ним следуе т абзац обычног о текста». С CSS дело обстоит немного иначе. Разработчик пишет набор правил; каждое правило выбирает элементы страницы, а затем задает для этих элементов набор стилей: h1.drink { } p { } color: brown; с селекторами Для CSS пишутся правила еделяющими, опр p), и k drin (например, h1. L применяHTM к каким частям разметки ль. ется данный сти Допустим, все заголовки drink выводятся коричневым цветом... ...А абзацы выводятся шрифтом без засечек. font-family: sans-serif; Код JavaScript состоит из команд. Каждая команда описывает небольшую часть выполняемой операции, а весь набор команд определяет поведение страницы: Набор команд. var age = 25; var name = "Owen"; if (age > 14) { Каждая команда выполняет небольшую часть работы, например объявляет переменн ые, в которых будут храниться используемые значения. Мы создаем переменную для хранения возраста (25). Нам понадобится и переменная для имени “Owen”. Значение переменной может использоваться для принятия решений. Возраст пользователя больше 14? alert("Sorry this page is for kids only!"); } else { } alert("Welcome " + name + "!"); 46  глава 1 А если нет - приветствуем пользователя по имени (впрочем, в нашем примере Оуэну 25 лет, так что сообщение не выводится). Если больше - сообщаем, что пользователь слишком стар для этой страницы. первое знакомство с javascript Переменные и значения Вероятно, вы заметили, что в программах JavaScript обычно используются переменные. Переменные предназначены для хранения значений. Каких? Рассмотрим несколько примеров: var name = "Duke"; uk e” Переменной isEligible присва ивается значение false. Переменные, при ниvar isEligible = false; мающие два значен ия, true и false (истина/ложь), называются логическими (или булевскими). “D winners Переменной присваивается последовательность символов (такая последовательность называется строкой). fal se var winners = 2; 2 нную Команда объявляет переме ет ива сва при и с именем winners 2. ие чен зна ое лов ей чис name isEligible В честь математика Джорджа Буля. Кроме чисел, строк и логических значений переменные могут хранить и другие данные. Вскоре мы доберемся и до них, но независимо от вида данных все переменные создаются по одним правилам. Присмотримся повнимательнее к объявлению переменной: Объявление переменной всегда начинается с ключевого слова var. Обратите внимание: логические значения не заключаются в кавычки. НИКАКИХ ИСКЛЮЧЕНИЙ! Даже если JavaScript не жалуется, что вы пропустили var. Вскоре вы поймете, почему... Далее указывается имя переменной. var winners = 2; Команда присваивания всегда завершается точкой с запятой. Наконец, при желании можно указать начальное значение переменной; для этого ставится знак равенства, за которым следует значение. Мы говорим «при желании», потому что, строго говоря, вы можете создать переменную без начального значения и присвоить его позднее. Для этого достаточно убрать из команды присваивание: var losers; Если переменная объявляется без знака равенства и значения, значит, вы просто собираетесь ее как-то использовать в будущем. Никакого значения? И как теперь жить?! Это просто унизительно. losers дальше 4   47 ключевые слова javascript Осторожно, ключевые слова! У переменной есть имя и у переменной есть значение. Также вы знаете, что в переменных могут храниться числа, строки и логические значения (и не только). Но как выбрать имя переменной? Подойдет любое имя? Нет, но подобрать допустимое имя несложно. Достаточно убедиться в том, что имя переменной не нарушает два простых правила: 1 Имя переменной должно начинаться с буквы, подчеркивания или знака доллара. 2 Потом могут следовать буквы, цифры, подчеркивания и знаки доллара - в любом количестве. Да, и еще один момент: не стоит путать JavaScript и использовать в качестве имен переменных встроенные ключевые слова, такие как var, function или false. Эти имена тоже выпадают из списка. В этой книге мы еще рассмотрим некоторые ключевые слова и разберемся, что они означают, а пока ограничимся кратким списком: break delete for let super void case do function new switch while catch else if package this with class enum implements private throw yield const export import protected true continue extends in public try debugger false instanceof return typeof default finally interface static var часто В: О: Что такое «ключевое слово»? Ключевое слово - одно из зарезервированных слов языка JavaScript. JavaScript использует такие слова для собственных целей. Если вы начнете использовать их как имена своих переменных, то только собьете с толку свой браузер. 48  глава 1 В: Задаваемые вопросы А если ключевое слово входит в имя переменной? Например, могу ли я создать переменную с именем ifOnly (то есть переменную, в имени которой присутствует ключевое слово if)? В: Конечно, можете. Запрещены только точные совпадения. Желательно, чтобы ваш код был простым и понятным, поэтому использовать имена вида elze тоже нежелательно - их легко спутать с else. В: В JavaScript учитывается регистр символов? Другими словами, myvariable и MyVariable - одно и то же? О: Если вы работали с разметкой HTML, то, скорее всего, привыкли к тому, что регистр символов не учитывается; в конце концов, для браузера тег ничем не отличается от . Но в JavaScript регистр символов учитывается в именах переменных, ключевых словах, именах функций... Короче, практически везде. Так что будьте внимательны с использованием верхнего и нижнего регистра! первое знакомство с javascript WEBVILLE T I M E S Как избежать дос адных ошибок с именами Выбор имен пере широк, по этому менных чрезвычайно двугла во ре коме нд ац ий, мы дадим не сколько Как? Пр го ог неды ша ще го др акон а. ли о­тек JavaScript. от многих неприяко то ры е сп ас ут ва с бу кв ы каосто начинайте с прописной ав тностей: жд ое сл ов о, кр то ры ис поль зу ютИ хотя некоторые ом е им ен а пе ре ме нпе го рв: оtw oH ea de dD ных, начи Выбирайте осмы сленные имена. баты й ре ги ст р» rag on With Fi re. «Гор- мендуем нающие ся с _, мы не рекооч та ен к по ст ь по пуля ре н и Может, имена _m обладает до ст у вас нет для это упать, если только го очень ве ск начают для вас, но, $, r и foo что-то оз- создания именаточной гибкостью для чин (ко ок и гда пе ру жа бу ре дут, тогда сами поих применной с любой ющие вас не не обхо поймут. Имена an ймете). ди мо й gle то, чн cu rrentPressure и passedExam не ву ют и др уг ие сх ос ть ю. Су ще ст - Будьте осторожны. ем ы за пи си им ен со вр ем ен ем, но только не забудут ся но «г, Будьте ос ор баты й ре ги ст р» ст ал са мы м то рожн намного более по и сд ел ают ва ш код распро ст раненным пе ре ме нн ых. По ы с вы бо ром им ен нятным. (в том числе и за зд не е мы пр ивед пр ед елами JavaScript) ещ Ис поль зу йт е «г ем е не ск ол ько пр. выбора имен, а по ав ил ос то рожн ого в именах из не скор баты й ре ги ст р» Используйт ка е имена, начина ольких слов. пр ос то запомните: выби ющие с _ и $, только в До пу ст им, в ка особых случаях. ся жите сь райте понятные имена, дерко й- то мо ме нт подальше от ключ нужно выбрать им ва м Им евых слов и ен а пе ре ме нн всегда ук я переменной, дл я с $, обычно ре зе ых, начи на ющ ие ся переменназывайте var при объявлении рвируются для би ой. б­ О синтаксисе ƒƒ Каждая команда завершается символом “;”. x = x + 1; ƒƒ Однострочный комментарий начинается с двух косых черт (//). Комментарии только содержат информацию о коде для вас и других разработчиков. В программе они не выполняются. // Это комментарий ƒƒ Лишние пробелы разрешены (почти везде). x = 2233; ƒƒ Строки должны заключаться в двойные кавычки (или одиночные, но выберите что-то одно - будьте последовательны). "You rule!" "And so do you!" ƒƒ Логические значения true и false записываются без кавычек. rockin = true; ƒƒ Переменным не обязательно присваивать значение при объявлении: var width; ƒƒ Язык JavaScript, в отличие от разметки HTML, учитывает регистр символов. Другими словами, Counter и counter - разные переменные. дальше 4   49 синтаксические упражнения СТАНЬ браузером Ниже приведен код JavaScript, содержащий ошибки. Представьте себя на месте браузера и попробуйте отыскать ошибки в коде. А когда это будет сделано, загляните в ответы в конце главы и посмотрите, не упустили ли вы чего-нибудь. A // Test for jokes var joke = "JavaScript walked into a bar...."; Пока не задумывайтесь над тем, что делает этот фрагмент JavaScript; просто постарайтесь отыскать ошибки в переменных и синтаксисе. var toldJoke = "false"; var $punchline = "Better watch out for those semi-colons." var %entage = 20; var result if (toldJoke = = true) { Alert($punchline); } else } alert(joke); B \\ Movie Night var zip code = 98104; var joe"sFavoriteMovie = Forbidden Planet; var movieTicket$ = 9; if (movieTicket$ >= 9) { alert("Too much!"); } else { } 50  глава 1 alert("We"re going to see " + joe"sFavoriteMovie); первое знакомство с javascript Поаккуратнее с выражениями! Чтобы выразить намерения на языке JavaScript, вам понадобятся выражения. Каждое выражение вычисляется, а результатом является значение. Мы уже встречались с выражениями в примерах кода. Давайте рассмотрим выражение в следующей команде: Команда JavaScript присваивает вычисленный результат переменной total. умЗнак * используется для я. ени дел для ножения, а / - var total = price - (price * (discount / 100)); Наша переменна я total. Присваивание. А это - выражение. Если вы хоть раз посещали уроки математики, подводили баланс или платили налоги, наверняка числовые выражения покажутся вам знакомыми. я В результате вычислени ся ет ша ень ум ice) цена (pr unt), на размер скидки (disco от х та цен про в заданный price цены. Если переменная, 10 ие чен зна ит содерж а discount - 20, резуль 8. ен рав ет тат буд Существуют и строковые выражения: я» в новую строку «Dear Эти строки «сцепляютс ывается конкатенацией). наз Reader» (такая операция "Dear " + "Reader" + "," ение входит переТо же самое, но в выраж у. При вычислении рок ст менная, содержащая g ся строка “supercalifra "super" + "cali" + youKnowTheRest результата получает ilisticexpialidocious”. * phoneNumber.substring(0,3) Еще один пример выражения, возвращающего строку. О том, как оно работает, будет рассказано позднее, а пока достаточно сказать, что выражение возвращает код зоны из телефонного номера. Результат вычисления также может быть истиной или ложью (true или false); данные выражения называются булевскими (или логическими). Определите, какой результат (true или false) получится при вычислении каждого из следующих выражений: age < 14 Если возраст (age) меньше 14, то результат равен true; в противном случае он равен false. Команда проверяет возраст пользователя. cost >= 3.99 animal = = "bear" Если цена товара больше или равна 3.99, выраж ение истинно. В противном случае оно ложно. Не пропустите распродажу! Истинно, если в названии животного присутствует слово “bear”. Результат выражения может быть значением другого типа; мы еще вернемся к этой теме. А пока важно знать, что при вычислении любого выражения будет получен некий результат - число, строка или логическое выражение. Что же нам это дает? * Предполагается, что переменная youKnowTheRest содержит строку “fragilisticexpialidocious”. дальше 4   51 упражнения с выражениями Возьми в руку карандаш Возьмите карандаш. Для каждого из приведенных выражений вычислите его значение и запишите в выделенном месте. Именно ЗАПИШИТЕ… забудьте слова мамы о том, что нельзя писать в книгах, и запишите ответ на странице! Свериться с ответами можно в конце главы. Калькулятор пересчета температуры по Цельсию в Фаренгейты? (9 / 5) * temp + 32 Логическое выражение. Оператор == проверяет, равны ли два значения. color == "orange" name + ", " + "you"ve won!" yourLevel > 5 Проверка: «первое значение больше второго?» Можно использовать оператор >= для условия «первое значение больше либо равно второму?» (level * points) + bonus color != "orange" Что получится, если переменная temp равна 10? __________ Истинным или ложным будет это выражение, если переменная color содержит значение “pink”? __________ А если значение “orange”? __________ Какое значение будет, если переменная name содержит строку “Martha”? __________________________________ Что получится, если переменная yourLevel = 2? ________ Что получится, если переменная yourLevel = 5? ________ Что получится, если переменная yourLevel = 7? ________ Переменная level = 5, points = 30000, а bonus = 3300. Что получится при вычислении? ________ Если переменная color содержит строку “pink”, будет это выражение истинным или ложным? __________ Оператор!= проверяет, что два значения НЕ равны. Вопрос на повышенную оценку! 1000 + "108" 52  глава 1 Существует несколько ответов. Из них правилен только один. Какой вы выберете? ______________________ Для любознательных Вы заметили, что в присваивании используется оператор =, а при проверке ==? Когда вы присваиваете значение переменной, ставьте один знак равенства =, а когда проверяете, совпадают ли два значения, - два знака ==. Начина ющие программисты часто путают эти операторы. первое знакомство с javascript while (juggling) { } keepBallsInAir(); Многократное выполнение операций Нам часто приходится повторно выполнять одни и те же операции: Прополоскать, сплюнуть, повторить. Скушать еще ложечку. А потом еще. Брать конфеты из коробки, пока они не кончатся. Конечно, в программах операции тоже приходится выполнять повторно. JavaScript предоставляет несколько синтаксических конструкций для повторного выполнения кода: while, for, for in и forEach. Со временем мы рассмотрим все эти разновидности циклов, а пока сосредоточимся на while. Мы недавно рассматривали выражения, вычисление которых дает логический результат (например, scoops > 0). Такие выражения играют ключевую роль в командах while: Цикл while начинается с ключевого слова while. Цикл while содержит логическое выражение, которое называется условием продолжения (или просто условием). Если условие цикла истинно, то весь программный блок выполняется. while (scoops > "); } scoops = scoops - 1; Если условие истинно, то после выполнения программного блока происходит возврат к началу цикла, и все повторяется заново. Если же условие ложно, цикл завершается. Что такое «программный блок»? Все, что заключено в фигурные скобки { }. И так до победного конца! дальше 4   53 циклы javascript Как работает цикл while Раз уж это ваш первый цикл while, давайте подробно рассмотрим его выполнение и досконально разберемся, как же он работает. Обратите внимание: мы добавили объявление переменной scoops и инициализировали ее значением 5. Выполнение кода начинается. Сначала переменной scoops (шарики мороженого) присваивается значение 5. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Затем программа переходит к команде while. Когда команда while выполняется в первый раз, сначала программа проверяет ее условие - истинно оно или ложно? Значение scoops var scoops = 5; больше нуля? Несомненно! while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Так как условие истинно, начинается выполнение программного блока. Первая команда в теле цикла выводит в браузер строку “Another scoop!
”. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); 54  глава 1 первое знакомство с javascript Следующая команда уменьшает текущее значение scoops на 1 и присваивает результат (4) все той же переменной scoops. 1 шарик съели, 4 осталось! var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Это последняя команда в блоке. Цикл возвращается к началу, и все повторяется заново. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Условие проверяется снова; на этот раз переменная scoops равна 4. Но хотя значение scoops уменьшилось, оно по-прежнему больше нуля. Еще много var scoops = 5; осталось! while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); И снова в браузер выводится строка “Another scoop!
”. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); дальше 4   55 цикл while в javascript Следующая команда уменьшает текущее значение scoops на 1 и присваивает результат (3) той же переменной scoops. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Это последняя команда блока; программа возвращается к условию, и все повторяется заново. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Условие проверяется снова, переменная scoops равна 3. Она все еще больше нуля. Шарики еще var scoops = 5; остались! while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Браузеру снова передается строка “Another scoop!
”. var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); 56  глава 1 2 шарика ушло, 3 осталось! первое знакомство с javascript Все продолжается снова и снова: при каждом выполнении цикла scoops уменьшается на 1, в браузер выводится очередная строка, а программа заходит на очередной круг. 3 шарика съели, 2 осталось! var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); И продолжается... 4 шарика съели, 1 остался! var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); До последнего раза... но теперь кое-что изменилось. Переменная scoops равна нулю, а условие оказывается ложным. На этом все кончается; цикл больше выполняться не должен. На этот раз программа обходит блок и выполняет команду, следующую за ним. 5 шариков съели, осталось 0! var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); Очередная команда выполняет document.write и выводит строку “Life without ice cream isn’t the same”. Готово! var scoops = 5; while (scoops > 0) { document.write("Another scoop!
"); scoops = scoops - 1; } document.write("Life without ice cream isn"t the same"); дальше 4   57 условные команды javascript if (cashInWallet > 5) { order = “Кутить так кутить: чизбургер, картошку и колу”; } else { order = “А я возьму стакан воды”; } Принятие решений в JavaScript Вы уже видели, как условное выражение используется для принятия решения о том, должно ли продолжаться выполнение цикла while. Логические выражения также могут использоваться для принятия решений в командах JavaScript, использующих if. Команда if выполняет свой программный блок только в том случае, если проверяемое условие истинно. Пример: т орым следуе ово if, за кот сл е во че. лю ок К ограммный бл условие и пр Это условие проверяет, осталось ли меньше трех шариков мороженого. if (scoops < 3) { } alert("Ice cream is running low!"); И если осталось меньше трех, выполняется программный блок команды if. Функция alert получает строку и выводит ее во всплывающем окне браузера. Попробуйте! Команда if позволяет последовательно выполнить несколько проверок; для этого добавляется одна или несколько секций else if: одно условие, если оно Сначала проверяется оверяется другое, не выполняется, то пр if (scoops >= 5) { указанное в if/else: alert("Eat faster, the ice cream is going to melt!"); } else if (scoops < 3) { } alert("Ice cream is running low!"); 58  глава 1 Добавьте столько дополнит ельных проверок “else if”, сколько вам нужно; с каждым условием связывается свой програ ммный блок, выполняющийся в случае его истинности. первое знакомство с javascript А если нужно принять МНОГО решений... Вы можете объединить сколько угодно команд if/else. Также можно добавить завершающую секцию else; если ни одно условие не выполняется, вы сможете обработать и эту ситуацию, как в следующем примере: if (scoops >= 5) { Сначала мы проверяем, осталось ли пять и более шариков мороженого... alert("Eat faster, the ice cream is going to melt!"); ...Или если осталось ровно три шарика... alert("Ice cream is running low!"); } else if (scoops = = 3) { } else if (scoops = = 2) { alert("Going once!"); ...Или если осталось 2, 1 или 0 шариков... В каждом случае выводится соответствующий сигнал. } else if (scoops = = 1) { alert("Going twice!"); } else if (scoops = = 0) { Если ни одно из предыдущи х условий не является истинн ым, то будет выполнен этот код. alert("Gone!"); } else { } В: О: alert("Still lots of ice cream left, come and get it."); часто Задаваемые вопросы Что такое «программный блок»? На уровне синтаксиса программный блок (который обычно называется просто блоком) представляет собой набор команд - одну или несколько, заключенных в фигурные скобки. Все команды блока образуют группу, которая выполняется как единое целое. Например, если условие while истинно, то будут выполнены все команды в блоке. Это относится и к блокам if или else if. В: Я видел код, в котором условие состоит из одной переменной, и эта переменная содержит даже не логическое значение, а строку. Как он работает? О: Эта тема рассматривается чуть позже, но в двух словах - язык JavaScript достаточно гибок в отношении того, что он считает истинными или ложными значениями. Например, любая переменная, которая содержит (непустую) строку, считается истинной, а переменная, которой еще не было присвоено значение, считается ложной. Подождите, вскоре мы рассмотрим этот вопрос будет подробно. В: Вы сказали, что результатом выражения могут быть не только числа, строки или логические значения, но и что-то еще. А что именно? О: Сейчас мы ограничимся примитивными типами: числами, строками и логическими значениями. Но со временем мы займемся более сложными типами: массивами (наборами значений), объектами и функциями. В: Откуда взялось название «булевские значения» (другое название логических значений)? О: Оно происходит от имени Джорджа Буля - английского математика, создателя булевой логики. дальше 4   59 развлечения с магнитами Развлечения с магнитами Магниты с фрагментами программы JavaScript перепутались. Сможете ли вы расставить их по порядку, чтобы получить работоспособную программу JavaScritp, которая будет выдавать приведенный ниже результат? Прежде чем продолжать чтение, сверьтесь с ответами в конце главы. Расставьте магниты по местам, чтобы получилась работоспособная программа JavaScript. document.write("Happy Birthday dear " + name + ",
"); document.write("Happy Birthday to you.
"); var i = 0; i = i + 1; var name = "Joe"; } document.write("Happy Birthday to you.
"); while (i < 2) { Расставьте магниты в этой области. 60  глава 1 Восстановленная программа должна выдавать этот результат. первое знакомство с javascript Привлекайте пользователя к взаимодействию со страницей Мы говорили о том, как важно повысить уровень интерактивности страниц и что для этого необходимо взаимодействие с пользователем. Это взаимодействие можно организовать несколькими способами; некоторые из них уже встречались вам. Ниже приведена краткая сводка таких взаимодействий, а потом мы рассмотрим их более подробно. Создание сигнала Браузер поддерживает простейший механизм оповещения пользователей при помощи функции alert. Вызовите alert со строкой, содержащей сообщение, и браузер выведет ее в симпатичном диалоговом окне. Честно говоря, мы немного злоупотребляли этой функцией, она очень проста и удобна; но ее следует применять только тогда, когда вы действительно хотите, чтобы пользователь отложил все дела и немедленно ознакомился с вашим сообщением. Прямая запись в документ Эти три способа встречаются в данной главе. Веб-страницу можно рассматривать как документ (именно так ее называет браузер). Функция document.write позволяет вывести произвольную разметку HTML и контент в произвольной точке страницы. Так поступать не рекомендуется, хотя время от времени этот способ все же применяется. Мы воспользовались, потому что он достаточно прост для изучения JavaScript. Вывод на консоль В каждой среде JavaScript существует консоль, на которую можно выводить сообщения из программного кода. Чтобы вывести сообщение на консоль, вызовите функцию console.log и передайте ей строку (вскоре мы рассмотрим работу с консолью более подробно). Функция console.log - отличный инструмент диагностики и отладки. Впрочем, в нормальной программе вывод на консоль спрятан от пользователя, так что данный механизм вряд ли можно назвать эффективным. Консоль - удобный инструмент для поиска ошибок в коде! Если вы ошиблись при вводе (например, пропустили кавычку), JavaScript обычно выводит на консоль описание ошибки, которое упростит ее поиск. Непосредственная модификация документа Основной способ взаимодействия со страницей и пользователями - средства JavaScript, позволяющие обращаться к разметке веб-страницы, читать и изменять ее содержимое, даже изменять структуру и стиль! Все эти операции выполняются через объектную модель документа (см. далее). Как вы вскоре убедитесь, это лучший вариант взаимодействия с пользователем. Однако для работы с объектной моделью документа необходимо знать структуру страницы и программный интерфейс, используемый при чтении и записи страницы. Вскоре мы доберемся до этой темы, но сначала нужно освоить еще немного JavaScript. Заветная цель, к которой мы стремимся. Достигнув ее, вы сможете читать страницу, изменять ее и выполнять любые манипуляции с ее содержимым. дальше 4   61 сравнение средств вывода javascript Кто и что делает? ае ае Все средства взаимодействия явились на маскарад. Удастся ли вам узнать их под масками? Соедините описания справа с именами в левом столбце. Мы провели одну линию за вас. document.write Я немедленно останавливаю то, чем занимается пользователь, и выдаю короткое сообщение. Чтобы двигаться дальше, пользователь должен нажать «OK». console.log Я умею вставлять небольшие фрагменты разметки HTML и текста в документ. Может, я и не самый элегантный способ передачи информации пользователю, но зато я работаю во всех браузерах. alert С моей помощью вы сможете полностью управлять вебстраницей: получать данные, введенные пользователем, изменять разметку HTML и стили, обновлять содержимое страницы. объектная модель документа 62  глава 1 Я существую исключительно для решения простых задач отладки, и позволяю выводить информацию на специальную консоль, предназначенную для разработчиков. первое знакомство с javascript Близкое знакомство с console.log Давайте разберемся, как работает функция console.log. Мы воспользуемся ею в этой главе для про­ смотра результатов выполнения кода, в других главах книги - для анализа и отладки выходных данных. Но не забывайте, что консоль остается скрытой от большинства рядовых веб-пользователей, поэтому использовать ее в окончательной версии веб-страницы нежелательно. Вывод на консоль обычно используется для диагностики в процессе разработки страницы. Кроме того, консоль помогает увидеть, что происходит в вашем коде, в процессе изучения основных конструкций JavaScript. Вот как это происходит: Берем любую строку... var message = "Howdy" + " " + "partner"; console.log(message); ...и передаем ее console.log. Строка выводится на консоли браузера. Консоль содержит все данные, которые выводятся вызовами console.log в вашем приложении. часто В: Задаваемые вопросы Я понимаю, что console.log может использоваться для вывода строк, но что это вообще такое? Почему “console” и “log” разделены точкой? О: Хороший вопрос. Мы немного забегаем вперед, но рассматривайте консоль как объект, выполняющий различные операции (консольные). Одна из таких задач - вывод данных на консоль. Чтобы приказать консоли выполнить эту операцию, мы используем синтаксис “console.log” и передаем выводимое значение в скобках. Помните об этом; объекты будут намного подробнее рассматриваться в этой книге. А пока достаточно просто уметь использовать console.log. В: А консоль умеет делать что-нибудь еще, кроме обычного вывода? О: Да, но чаще она используется для обычного вывода. Существует еще несколько способов использования вывода (и консоли), но они относятся к специфике конкретных браузеров. Консоль поддерживается всеми современными браузерами, но не определяется ни в одной формальной спецификации. В: О: Все это, конечно, хорошо, но



Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым “горячим” языком программирования – JavaScript!
С помощью этой книги вы узнаете все о языке JavaScript – от переменных до циклов. Вы поймете, почему разные браузеры по-разному реагируют на код и как написать универсальный код, поддерживаемый всеми браузерами. Вам станет ясно, почему с кодом JavaScript никогда не придется беспокоиться о перегруженности страниц и ошибках передачи данных. Не пугайтесь, даже если ранее вы не написали ни одной строчки кода, – благодаря уникальному формату подачи материала эта книга с легкостью проведет вас по всему пути обучения: от написания простейшего скрипта до создания сложных веб-проектов, которые будут работать во всех современных браузерах.
Особенностью этого издания является уникальный способ подачи материала, выделяющий серию “Head First” издательства O’Reilly в ряду множества скучных книг, посвященных программированию.

В незнакомых водах

первое знакомство с javascript

JavaScript открывает фантастические возможности. JavaScript, основной язык программирования Всемирной паутины, позволяет определять расширенное поведение в веб-страницах. Забудьте о сухих, скучных, статичных страницах, которые просто занимают место на экране, - с JavaScript вы будете
взаимодействовать с пользователями, реагировать на события, получать и использовать данные из Интернета, выводить графику… и многое, многое другое. При хорошем знании JavaScript вы сможете даже программировать совершенно новое поведение на своих страницах.

И не сомневайтесь - ваши знания будут востребованы. Сейчас JavaScript не только является одним из самых популярных языков программирования, но и поддерживается всеми современными (и многими несовременными) браузерами; более того, появились встроенные реализации JavaScript, существующие отдельно от браузеров. А впрочем, хватит разговоров. Пора браться за дело!

Как работает JavaScript 38
Как пишется код JavaScript 39
Как включить код JavaScript в страницу 40
JavaScript, ты проделал длинный путь, детка… 42
Как создаются команды 46
Переменные и значения 47
Осторожно, ключевые слова! 48
Поаккуратнее с выражениями! 51
Многократное выполнение операций 53
Как работает цикл while 54
Принятие решений в JavaScript 58
А если нужно принять МНОГО решений… 59
Привлекайте пользователя к взаимодействию со страницей 61
Близкое знакомство с console.log 63
Как открыть консоль 64
Пишем серьезное приложение на JavaScript 65
Как добавить код в страницу? (считаем способы) 68
Разметка и код: пути расходятся 69

Следующий шаг

настоящий код

Вы уже знаете, что такое переменные, типы, выражения… и так далее. Вы уже кое-что знаете о JavaScript. Более того, знаний достаточно для того, чтобы начать писать настоящие программы, которые делают что-то интересное, которыми кто-то будет пользоваться. Правда, вам не хватает практического опыта написания кода, и мы прямо сейчас начнем решать эту проблему. Как? А просто возьмемся за написание несложной игры, полностью реализованной на JavaScript. Задача масштабная, но мы будем двигаться к цели постепенно, шаг за шагом. Итак, беремся за дело, а если вам вдруг захочется использовать нашу разработку в своих проектах - мы не против, распоряжайтесь кодом, как считаете нужным.

Функции для всех

знакомство с функциями

В этой главе вы овладеете своей первой супер способностью. Вы уже кое-что знаете о программировании; пришло время сделать следующий шаг и освоить работу с функциями. Функции позволяют писать код, который может повторно использоваться в разных ситуациях; код, существенно более простой в сопровождении; код, который можно aбстрагировать и присвоить ему простое имя, чтобы вы могли забыть о рутинных подробностях и заняться действительно важными делами. Вы увидите, что функции не только открывают путь к мастерству программиста, но и играют ключевую роль в стиле программирования JavaScript. В этой главе мы начнем с основ: механики и всех тонкостей работы функций, а потом в оставшейся части книги будем совершенствовать ваши навыки работы с функциями. Итак, начнем с азов… прямо сейчас.

наведение порядка в данных

JavaScript может работать не только с числами, строками и логическими значениями. До настоящего момента мы работали исключительно с примитивами - простыми строками, числами и логическими значениями (например, «Fido», 23 и true). С примитивными типами можно сделать многое, но в какой-то момент возникнет необходимость в расширенных данных для представления всех позиций в корзине покупок, всех песен в плейлисте, группы звезд и их звездных величин или целого каталога продуктов. Подобные задачи требуют более серьезных средств. Типичным инструментом для представления таких однородных данных является массив JavaScript. В этой главе вы узнаете, как помещать данные в массив, передавать их и работать с ними. В последующих главах будут рассмотрены другие способы структурирования данных, но начнем мы с массивов.

Поездка в Объектвиль

знакомьтесь: объекты

До настоящего момента мы использовали примитивы и массивы. И при этом применялась методология процедурного программирования с простыми командами, условиями, циклами for/while и функциями. Такой подход был далек от принципов объектно-ориентированного программирования. Собственно, он вообще не имел ничего общего с объектно-ориентированным программированием. Мы использовали объекты время от времени (причем вы об этом даже не знали), но еще не написали ни одного собственного объекта. Пришло время покинуть скучный процедурный город и заняться созданием собственных объектов.
В этой главе вы узнаете, почему объекты сильно улучшают нашу жизнь - во всяком случае в области программирования. Так и знайте: привыкнув к объектам, вы уже не захотите возвращаться обратно. Да, и не забудьте прислать открытку, когда обживетесь.

Модель DOM

взаимодействие с веб-страницей

Вы значительно продвинулись в изучении JavaScript. Фактически вы из новичка в области сценарного программирования превратились в… программиста. Впрочем, кое-чего не хватает: для полноценного использования ваших навыков JavaScript необходимо уметь взаимодействовать с веб-страницей, в которой
располагается ваш код. Только в этом случае вы сможете писать динамические страницы, которые реагируют на действия пользователя и обновляются после загрузки. Как взаимодействовать со страницей? Через объектную модель документа DOM (Document Object Model). В этой главе мы рассмотрим DOM и общие принципы работы с этой моделью из JavaScript для расширения возможностей страницы.

Серьезные типы

типы, равенство, преобразования и все такое

Настало время серьезно поговорить о типах. Одна из замечательных особенностей JavaScript заключается в том, что начинающий может достаточно далеко продвинуться, не углубляясь в подробности языка. Но чтобы действительно овладеть языком, получить повышение по работе и заняться тем, чем действительно стоит заниматься, нужно хорошо разбираться в типах. Помните, что мы говорили о JavaScript, - что у этого языка не было такой роскоши, как академическое определение, прошедшее экспертную оценку? Да, это правда, но отсутствие академической основы не помешало Стиву Джобсу и Биллу Гейтсу; не помешало оно и JavaScript. Это означает, что система типов JavaScript… ну, скажем так - не самая продуманная, и в ней найдется немало странностей. Но не беспокойтесь, в этой главе мы все разберем, и вскоре вы научитесь благополучно
обходить все эти неприятные моменты с типами.

Построение приложения

все вместе

Подготовьте свой инструментарий к работе. Да, ваш инструментарий - ваши новые навыки программирования, ваше знание DOM и даже некоторое знание HTML и CSS. В этой главе мы объединим все это для создания своего первого полноценного веб-приложения. Довольно примитивных игр с одним кораблем, который размещается в одной строке. В этой главе мы построим полную версию: большое игровое поле, несколько кораблей, ввод данных пользователем прямо на веб-странице. Мы создадим структуру страницы игры в разметке HTML, применим визуальное оформление средствами CSS и напишем код JavaScript, определяющий поведение игры. Приготовьтесь: в этой главе мы займемся полноценным, серьезным программированием и напишем вполне серьезный код.

Обработка событий

асинхронное программирование

В этой главе вам предстоит подняться на принципиально новый уровень. До настоящего момента мы писали код, который обычно выполняется сверху вниз. Конечно, в нем использовались функции, объекты и методы, но выполнение шло по заранее намеченной колее. Жаль, что нам приходится сообщать такие новости во второй половине книги, но такая структура кода не характерна для JavaScript. Большая часть кода JavaScript пишется для обработки событий. Каких событий? Да любых. Пользователь щелкает на странице, данные поступают из сети, в браузере срабатывает таймер, в DOM происходят изменения… Это далеко не полный список. Более того, в браузере постоянно происходят события, которые в основном остаются незамеченными. В этой главе мы пересмотрим свой подход к программированию и узнаем, для чего же нужно писать код, реагирующий на события.

Функции без ограничений

первоклассные функции

Изучайте функции и блистайте. В каждом ремесле, искусстве и дисциплине есть ключевой принцип, который отличает игроков «среднего звена» от настоящего профессионала, - и когда речь заходит о JavaScript, признаком профессионализма является хорошее понимание функций. Функции играют фундаментальную роль в JavaScript, и многие приемы, применяемые при проектировании и организации кода, основаны на хорошем знании функций и умении использовать их. Путь изучения функций на этом
уровне интересен и непрост, так что приготовьтесь… Эта глава немного напоминает экскурсию по шоколадной фабрике Вилли Вонка - во время изучения функций JavaScript вы увидите немало странного, безумного и замечательного.

Серьезные функции

анонимные функции, область действия и замыкания

Мы узнали много нового о функциях, но это далеко не всё. В этой главе мы пойдем дальше и разберемся в темах, которыми обычно занимаются профессионалы. Вы научитесь действительно эффективно работать с функциями. Глава будет не слишком длинной, но с довольно интенсивным изложением материала, так что к концу главы выразительность вашего кода JavaScript превзойдет все ожидания. Вы также будете готовы к тому, чтобы взяться за анализ кода коллеги или заняться изучением библиотеки JavaScript с открытым кодом, потому что мы заодно изучим некоторые распространенные идиомы и соглашения, связанные с использованием функций. А если вы никогда не слышали об анонимных функциях и замыканиях, то это самое подходящее место для знакомства!

Создание объектов

нетривиальное создание объектов

До настоящего момента мы создавали объекты вручную. Для каждого объекта использовался объектный литерал, который задавал все без исключения свойства. Для небольших программ это допустимо, но для
серьезного кода потребуется что-то получше, а именно конструкторы объектов. Конструкторы упрощают создание объектов, причем вы можете создавать объекты по единому шаблону - иначе говоря, конструкторы позволяют создавать серии объектов, обладающих одинаковыми свойствами и содержащих одинаковые методы. Код, написанный с использованием конструкторов, получается гораздо более компактным и снижает риск ошибок при создании большого количества объектов. Уверяем, что после изучения этой главы вы будете пользоваться конструкторами так, словно занимались этим всю сознательную жизнь.

Сильные объекты

использование прототипов

Научиться создавать объекты - только начало. Пришло время «накачать мышцы» - изучить расширенные средства определения отношений между объектами и организовать совместное использование кода. Кроме того, нам понадобятся механизмы расширения существующих объектов. Иначе говоря, нам нужно
расширить свой инструментарий работы с объектами. В этой главе вы увидите, что в JavaScript реализована достаточно мощная объектная модель, но она немного отличается от модели традиционных объектно-ориентированных языков. Вместо типичных объектно-ориентированных систем на базе классов JavaScript использует модель прототипов - объектов, способных наследовать и расширять поведение других объектов. Какая в этом польза для вас? Вскоре узнаете. Итак, за дело…

Download from free file storage

Resolve the captcha to access the links!

Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком программирования – JavaScript! С помощью этой книги вы узнаете все о языке JavaScript: от переменных до циклов. Вы поймете, почему разные браузеры по-разному реагируют на код и как написать универсальный код, поддерживаемый всеми браузерами. Вам станет ясно, почему с кодом JavaScript никогда не придется беспокоиться о перегруженности страниц и ошибках передачи данных. Не пугайтесь, даже если ранее вы не написали ни одной строчки кода, – благодаря уникальному формату подачи материала эта книга с легкостью проведет вас по всему пути обучения: от написания простейшего скрипта до создания сложных веб-проектов, которые будут работать во всех современных браузерах. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O’Reilly в ряду множества скучных книг, посвященных программированию.

На нашем сайте вы можете скачать книгу "Изучаем программирование на JavaScript" Фримен Элизабет бесплатно и без регистрации в формате fb2, rtf, epub, pdf, txt, читать книгу онлайн или купить книгу в интернет-магазине.

Всегда хочется получить исчерпывающие знания в области, с которой вы работаете. JavaScript - один из языков, о котором получить исчерпывающие знания почти невозможно. Он постоянно развивается, как развивается и веб вообще, поэтому любой веб-разработчик должен стремиться успеть за этим развитием, и уж тем более обязан назубок знать основы технологии, которую он применяет.

JavaScript сейчас доминирует в мире IT. С его помощью вы можете как создать маленькое веб-приложение, так и запрограммировать робота. К счастью, язык существует уже довольно давно, и овладевшие им в превосходстве разработчики описали свой опыт программирования на нём в книгах.

Эта книга рассказывает, как заставить компьютеры делать то, что вам от них нужно. Компьютеры сегодня так же распространены, как отвёртки - но содержат гораздо больше скрытых сложностей, и поэтому их сложнее понять и с ними сложнее работать. Для многих они остаются чуждыми, слегка угрожающими штуками. Также книга доступна на русском языке.

В этой книге дан тщательный обзор мира JavaScript через разбор встроенных объектов и нюансов языка. Эта книга точно не предназначена для людей, только начинающих изучать программирование вообще и JavaScript в частности.

Эта книга посвящена рассмотрению как классических, так и современных шаблонов программирования на JavaScript. В целом ориентирована на начинающих программистов.

HTML5 даёт великолепные возможности. Как и jQuery. Как и Node.JS. Если добавить к ним ещё немного чистого JavaScript - вы запросто покорите веб.

Данная книга рассчитана на тех, кто планирует создавать веб-приложения с помощью JS. В ней описываются особенности языка, полезные инструменты, шаблоны, и этим список не ограничивается.

Эта книга даст вам универсальные знания о JavaScript, понимание как его общей логики, так и деталей. Автор предполагает, что читатель уже знаком с принципами объектно-ориентированного программирования и каким-либо языком вроде PHP, Ruby, Python, C++ или Java.

Вы готовы сделать шаг вперед в своей практике веб-программирования и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком программирования - JavaScript!

Прочитав эту книгу, вы узнаете все о языке JavaScript: от переменных до циклов. Вы поймете, почему разные браузеры по-разному реагируют на код и как написать универсальный код, поддерживаемый всеми браузерами. Вы поймете, почему JS - это будущее, и станете настоящим фронтенд-разработчиком.

В этой книге показано, как писать на JS фронтенд приложений, не используя никаких третьесторонних фреймворков или библиотек.

Кроме общего знания принципов JavaScript, эта книга подарит вам также знания из смежных областей, вроде JSON или NoSQL, а так же понимание того, как вообще пишутся веб-приложения.

Как понятно из названия, эта книга посвящена разработке одностраничных приложений. В ней нет описания конкретных технологий и фреймворков, но зато неплохо описаны общие шаблоны и практики.

Книга посвящена работе с DOM (Document Object Model) - пожалуй, самому важному в JavaScript для всех веб-разработчиков.

Эта книга, написанная Дугласом Крокфордом, создателем JSON и JSLint, является классикой мира JavaScript, и прочитать её должен каждый. В ней рассказывается об основах объектно-ориентированного подхода и приводится множество примеров, как хороших, так и плохих. Разумеется, автор рассказывает, как исправлять такие «вредные» примеры и как не допускать подобных ошибок.

Эта серия, написанная известным преподавателем Кайлом Симпсоном, состоит из 6 книг, каждая из которых покрывает отдельный раздел языка. Главным преимуществом этих книг является то, что они достаточно короткие, благодаря чему вы не успеете отвлечься. А книгу «ES6 и не только» из этой серии вы можете приобрести в бумажном варианте на русском языке.

JavaScript - это главный инструмент веб-разработчиков, позволяющий делать интернет-страницы интерактивными, динамичными и достичь наивысшей производительности. Это отлично структурированное руководство по JavaScript, которое позволит быстро изучить этот не самый простой в освоении, но очень востребованный язык. Большое внимание в книге уделено библиотеке jQuery. Присутствуют также много примеров и подробно разобранных заданий.

Прочитав «Исчерпывающее руководство» вы сможете:

  • Сделать страницы своего сайта интерактивными.
  • Освоить последнюю версию плагина jQuery UI.
  • Создавать удобные формы с автоматической валидацией и исправлением данных.
  • Применять технологию AJAX.
  • Углубить свои знания в области и стать профессионалом.

После изучения основ верстки вам непременно захочется большей интерактивности и красоты, а также более удобных способов взаимодействия сайта с бэкендом. Тогда-то на арену и выходит JavaScript вместе с безумно популярным фреймворком jQuery. Для начала работы с книгой от вас не требуется никаких глубоких знаний – все их вы получите именно из нее. Здесь демонстрируются только новейшие практики в области кроссбраузерности и оптимизации страниц, а изложение ведется понятным языком с наглядными примерами и иллюстрациями.

Книга, уже ставшая классикой. В ее последнем издании охватываются HTML5 и ECMAScript 6 – актуальнейшие на нынешний день технологии. Также в нем добавлены новые главы, посвященные jQuery и JavaScript на стороне сервера. Это руководство пригодится как совсем еще новичкам, так и тем, кто хочет отточить свое знание JavaScript до совершенства.

15
авг
2016

Изучаем программирование на JavaScript (Эрик Фримен, Элизабет Робсон)

ISBN: 978-5-496-01257-7, Head First O"Reilly
Формат: PDF, OCR с ошибками
Эрик Фримен, Элизабет Робсон
Год выпуска: 2015
Жанр: Языки программирования
Издательство: Питер
Язык: Русский
Количество страниц: 640
Описание: Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым "горячим" языком программирования - JavaScript!
С помощью этой книги вы узнаете все о языке JavaScript - от переменных до циклов. Вы поймете, почему разные браузеры по-разному реагируют на код и как написать универсальный код, поддерживаемый всеми браузерами. Вам станет ясно, почему с кодом JavaScript никогда не придется беспокоиться о перегруженности страниц и ошибках передачи данных. Не пугайтесь, даже если ранее вы не написали ни одной строчки кода, - благодаря уникальному формату подачи материала эта книга с легкостью проведет вас по всему пути обучения: от написания простейшего скрипта до создания сложных веб-проектов, которые будут работать во всех современных браузерах.
Особенностью этого издания является уникальный способ подачи материала, выделяющий серию "Head First" издательства O"Reilly в ряду множества скучных книг, посвященных программированию.


26
июл
2017

Изучаем JavaScript. Руководство по созданию современных веб-сайтов (Этан Браун)

ISBN: 978-5-9908463-9-5, 978-1-491-91491-5

Автор: Этан Браун
Год выпуска: 2017
Жанр: Программирование
Издательство: Вильямс
Язык: Русский
Количество страниц: 363
Описание: Сейчас самое время изучить JavaScript. После выхода последней спецификации JavaScript - ECMAScript 6.0 (ES6) - научиться создавать высококачественные приложения на этом языке стало проще, чем когда-либо ранее. Эта книга знакомит программистов (любителей и профессионалов) со спецификацией ES6 наряду с некоторыми связанными с ней инструментальными средствами и методиками на сугубо п...


23
июн
2007

Жанр: Программирование
Автор: Хомоненко А.Д.
Страна: Россия
Количество страниц: 252
Описание: Содержит систематическое изложение основных приемов программирования на языке
С++: описание типов даных, объявление переменных, организация разветвлений и циклов, описание и использование массивов, указателей, функций. Рассматриваются понятия и приёмы объектно-ориентированного программирования. Описываеттся технология разработки программ в среде Borland C++ Builder.
Формат: PDF


08
авг
2012

PHP, JavaScript, JQuery, CSS, HTML, MySQL, ООП. Краткий сборник возможных вопросов и ответов на собеседовании. (Андрей Шевченко)

Формат: PDF, eBook (изначально компьютерное)
Автор: Андрей Шевченко
Год выпуска: 2012
Жанр: Справочники, учебники
Издательство: NeisstonPub
Язык: Русский
Количество страниц: 57
Описание: Идея написания этой книги появилась у меня после того, как я, готовясь к своему первому собеседованию на должность PHP-девелопера, не смог найти толкового ”туториала”, в котором были бы собраны наиболее часто встречающиеся вопросы и задачи, которые задают на таких собеседованиях. Но готовиться же как-то надо? Надо. Иначе спросят потом чем отличается MyISAM от InnoDB или что выберет вот такой jQuery-фильтр $(“a ...


18
окт
2010

Программирование на языке Ruby (Хэл Фултон)


Издательство: М., ДМК Пресс ISBN: 5-94074-357-9
Год выпуска: 2007
Жанр: Программирование
Язык: Русский
Количество страниц: 688
Описание: Ruby - относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby - ее можно использовать и как учебник, и как спра...


11
окт
2012

Программирование на С++ (4-е издание) (Уолтер Савич)


Автор: Уолтер Савич
Год выпуска: 2004
Жанр: Программирование
Издательство: Addison-Wesley
Язык: Русский
Количество страниц: 784
Описание: Книга содержит исчерпывающую информацию о языке программирования C++. Помимо "стандартных" тем, таких как объявление переменных, операторы выбора, циклы, массивы, функции и др., подробно рассматривается также работа с векторами, динамические многомерные массивы, обработка исключений, указатели и перегрузка операторов. Примеры и задания для самостоятельной работы, содержащиеся в каждой главе, помогут читателю закрепить и...


26
авг
2010

Программирование на языке C# (Сборник книг №2) (разные)

ISBN: 5-94074-409-5
Формат: PDF, OCR без ошибок
Год выпуска: 2008
Автор: Горнаков С. Г.
Жанр: Программирование мобильников
Издательство: ДМК Пресс
Количество страниц: 512
Описание: Это второе издание популярной книги. Новая версия издания содержит девять дополнительных глав. Теперь читатель кроме программирования приложений для платформы Java 2 ME изучит полный процесс создания мобильной игры. Во время работы с книгой будет освоен подход в формировании полноценного мобильного игрового движка, изучена работа с графикой, анимацией, даны примеры многослойных и анимированных игровых карт. Рассматр...


22
апр
2018

Программирование сетевых приложений на C++. Том 1 (Дуглас С. Шмидт, Стивен Д. Хьюстон)

ISBN: 978-5-9518-0362-7
Формат: JPG, Отсканированные страницы
Автор: Дуглас С. Шмидт, Стивен Д. Хьюстон
Год выпуска: 2009
Жанр: Программирование
Издательство: Бином
Язык: Русский
Количество страниц: 304
Описание: В книге излагается один из самых перспективных подходов к профессиональному программированию сетевых приложений на C++. Рассматриваются основные причины сложности разработки сетевых приложений, а также паттерны проектирования и ACE IIO промежуточного слоя с открытыми исходными кодами, которое можно свободно грузить с сайта в Интернет и которое является одним из наиболее переносимых и...


05
дек
2009

Жасмин Бланшет, Марк Саммерфилд. Программирование GUI на C++

ISBN: 978-5-91136-059-7
Формат: DjVu, OCR без ошибок
Год выпуска: 2008
Автор: Жасмин Бланшет, Марк Саммерфилд
Жанр: Программирование
Издательство: Кудиц-Пресс
Количество страниц: 736
Описание: Книга представляет собой дополненное и исправленное издание востребованной на российском рынке книги «Qt4: программирование GUI на С++», выпущенной в 2007 году. В новое издание были внесены изменения, связанные с использованием возможностей, появившихся в Qt версий 4.2 и 4.3, добавлены новые главы, посвященные настройке диалога с пользователем и созданию прикладных скриптов, рассмотрены базовые принципы...


24
ноя
2008

Горнаков С.Г. - Программирование мобильных телефонов на J2ME

Формат: DjVu, Отсканированные страницы
Год выпуска: 2005
Автор: Горнаков С.Г
Жанр: самоучитель по J2ME
Издательство: дмк
Количество страниц: 331
Описание: довольно хорошая и понятная книга по програмированию для мобильных телефонов на яве


03
июл
2016

Программирование на C для начинающих. 4-е издание (Майк МакГрат)

ISBN: 978-5-699-79117-0
Формат: PDF, eBook (изначально компьютерное)
Автор: Майк МакГрат
Переводчик: М. Райтман
Год выпуска: 2016
Жанр: Компьютерная литература, программирование
Издательство: Эксмо
Серия: Программирование для начинающих
Язык: Русский
Количество страниц: 192
Описание: В этой книге с помощью примеров программ и иллюстраций, показывающих результаты работы кода, разбираются все ключевые аспекты языка С. В этой книге описано даже то, как установить бесплатный компилятор для языка С и работать в нем, у вас просто не будет шансов ошибиться! Книга идеально подойдет программистам, пе...


25
ноя
2010

Издательство: Питер
Язык интерфейса: только русский
Лекарство: Не требуется
Описание: Эта книга предназначена для самостоятельного освоения программирования на языке JavaScript. Кроме общего руководства, она содержит множество примеров и текстов готовых к использованию программ. Рассматриваются вопросы создания сценариев для веб-сайтов, а также сценариев, выполняемых Windows Scripting Host. В приложениях приводится справочная информация по JavaScript и HTML. Книга адресована как новичкам, так и тем, кто уже имеет некоторый опыт в веб-дизайне и программировании. Во втором и...

11
авг
2012

JavaScript. Библия пользователя (5-е издание) (Дэнни Гудман, Майкл Моррисон)

ISBN: 5-8459-1027-7
Формат: PDF, Отсканированные страницы
Автор: Дэнни Гудман, Майкл Моррисон
Год выпуска: 2006
Жанр: Программирование
Издательство: Диалектика
Язык: Русский
Количество страниц: 1179
Описание: Эта книга адресована широкому кругу читателей Web-дизайнеров, которые решили детально изучить язык JavaScript. Она имеет все шансы завоевать титул полного справочного руководства по JavaScript не только в глазах его разработчиков, но и в сердцах пользователей. В издании подробно описаны практически все средства разработки сценариев JavaScript, используемые в современных и уже устаревших б...


17
авг
2012

Изучаем Ruby (Майкл Фитцджеральд)

ISBN: 978-5-9775-0225-2, 978-0-596-52986-4;
Формат: DjVu, Отсканированные страницы
Автор: Майкл Фитцджеральд
Год выпуска: 2008 г.
Жанр: Програмирование
Издательство: БХВ-Петербург
Язык: Русский
Количество страниц: 336
Описание: Книга представляет собой руководство по созданию веб-приложений на языке Ruby. Изучение построено на практических примерах, листинги которых есть почти на каждой странице. Даны основы Ruby, рассмотрены условные операторы, строки и регулярные выражения, операторы, функции, массивы, хэши, работа с файлами, классы. Описаны обработка XML, рефлексия, метапрограммирование, об...




Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: