JavaScript. Подробное руководство (Дэвид Флэнаган) [2008, Программирование, PDF, Отсканированные страницы]
Эта книга — одно временно и руководство программиста с большим числом практических при меров, и полноценный справочник по базовому языку JavaScript и клиент ским прикладным интерфейсам, предоставляемым вебброузерами. После выхода последней спецификации JavaScript - ECMAScript 6. Книга адресована как новичкам, так и тем, кто уже имеет некоторый опыт в веб-дизайне и программировании.
Метод hashCode в нём перегружен, и возвращает хэш строки. В части II описывается среда разработки сценариев, предоставляемая вебброузерами. ISBN: 978-5-496-01257-7, Head First O'Reilly Формат: , Автор: , Год выпуска: 2015 Жанр: Издательство: Язык: Количество страниц: 640 Описание: Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? ISBN: 978-5-9908463-9-5, 978-1-491-91491-5 Формат: , изначально компьютерное Автор: Год выпуска: 2017 Жанр: Издательство: Язык: Количество страниц: 363 Описание: Сейчас самое время изучить JavaScript.
JavaScript. Подробное руководство (Дэвид Флэнаган) [2008, Программирование, PDF, Отсканированные страницы] - Но на поверку оказывается, что разбирать хитросплетение символов, прослеживать по ним вехи истории, разгадывать загадку маленькой эмблемы—дело увлекательное и полезное для любого человека. Иногда архитектуру Comet называют «Server Push», «Ajax Push» и «HTTP Streaming».
Автор: Дэвид Флэнаган Год: 2012 ISBN: 978-5-93286-215-5 Страниц: 1080 Язык: Русский Формат: PDF Размер: 12 Мб Данная книга — это уже шестое издание нашумевшего бестселлера «JavaScript. Подробное руководство», в которое вошли новые сведения о JavaScript в соответствии с современным положением дел в сфере разработки приложений для web 2. Книгу можно назвать и справочником по базовому языку JavaScript и руководством программиста с большим числом практических примеров. Классы и модули Введение в JavaScript-объекты было дано в главе 6, где каждый объект трактовался как уникальный набор свойств, отличающих его от любых других объектов. Однако часто бывает полезнее определить класс объектов, обладающих общими свойствами. Члены, или экземпляры, класса обладают собственными свойствами, определяющими их состояние, но они также обладают свойствами обычно методами , определяющими их поведение. Эти особенности поведения определяются классом и являются общими для всех экземпляров. Например, можно объявить класс Complex для представления комплексных чисел и выполнения арифметических операций с ними. Экземпляр класса Complex мог бы обладать свойствами для хранения действительной и мнимой частей комплексного числа. А класс Complex мог бы определять методы, выполняющие операции сложения и умножения поведение этих чисел. Классы в языке JavaScript основаны на использовании механизма наследования прототипов. Если два объекта наследуют свойства от одного и того же объекта-прототипа, говорят, что они принадлежат одному классу. С прототипами и наследованием мы познакомились в разделах 6. Сведения из этих разделов вам обязательно потребуются для понимания того, о чем рассказывается в этой главе. В этой главе прототипы будут рассматриваться в разделе 9. Если два объекта наследуют один и тот же прототип, обычно но не обязательно это означает, что они были созданы и инициализированы с помощью одного конструктора. С конструкторами мы познакомились в разделах 4. Дополнительные сведения о них в этой главе приводятся в разделе 9. Те, кто знаком со строго типизированными объектно-ориентированными языками программирования, такими как Java или C++, могут заметить, что классы в языке JavaScript совершенно не похожи на классы в этих языках. Конечно, есть некоторые синтаксические сходства, и имеется возможность имитировать многие особенности «классических» классов в JavaScript. Но лучше будет с самого начала понять, что классы и механизм наследования на основе прототипов в языке JavaScript существенно отличаются от классов и механизма наследования на основе классов в языке Java и подобных ему. Еще одной важной особенностью классов в языке JavaScript является возможность динамического расширения. Эта особенность описывается в разделе 9. Классы можно также интерпретировать как типы данных, и в разделе 9. В этом разделе вы также познакомитесь с философией программирования, известной как «утиная типизация» «duck-typing» , которая во главу угла ставит не тип объекта, а его возможности. После знакомства со всеми этими основами объектно-ориентированного программирования в JavaScript мы перейдем в этой же главе к изучению более практического материала. Определение классов — это один из способов создания модульного программного кода многократного использования. В последнем разделе этой главы мы в общих чертах поговорим о модулях в языке JavaScript. Литералы RegExp и создание объектов Литералы простых типов, таких как строки и числа, интерпретируются как одни и те же значения, где бы они ни встретились в программе. Литералы регулярных выражений — особый случай. Спецификация ЕСМА-Script 3 утверждает, что литерал RegExp преобразуется в объект RegExp в ходе синтаксического анализа программного кода и каждый раз, когда интерпретатор встречает литерал RegExp, он возвращает один и тот же объект. Спецификация ECMAScript 5 изменила это положение вещей и требует, чтобы всякий раз, когда в программе встречается литерал RegExp, возвращался бы новый объект. Реализация в броузере IE всегда соответствовала поведению, соответствующему ECMAScript 5, и большинство современных броузеров также перешли на новую реализацию, раньше, чем полностью реализовали новый стандарт. Подмножества и расширения JavaScript До сих пор в книге описывалась официальная версия языка JavaScript, соответствующая стандартам ECMAScript 3 и ECMAScript 5. В этой главе, напротив, будет идти речь о подмножествах и надмножествах языка JavaScript. Подмножества языка были определены, по большей части, для обеспечения более высокого уровня безопасности: сценарий, использующий только безопасное подмножество языка, может использоваться без опаски, даже если он был получен из непроверенного источника, такого как рекламный сервер. Стандарт ECMAScript 3 был опубликован в 1999 году, и прошло десять лет, прежде чем стандарт был обновлен до версии ECMAScript 5, вышедшей в 2009 году. Брендан Эйх Brendan Eich , создатель JavaScript, продолжал развивать язык на протяжении всех этих десяти лет спецификация ECMAScript явно разрешает расширение языка и совместно с проектом Mozilla выпустил версии JavaScript 1. Некоторые из расширенных особенностей JavaScript вошли в стандарт ECMAScript 5, но многие остаются не-стандартизованными. Однако, как ожидается, некоторые из оставшихся нестандартных особенностей будут стандартизованы в будущем. Эти расширения поддерживаются броузером Firefox, точнее, реализованным в нем интерпретатором Spidermonkey языка JavaScript. Созданный проектом Mozilla интерпретатор Rhino языка JavaScript, написанный на языке Java раздел 12. Однако, поскольку эти расширения языка не являются стандартными, они не особенно полезны для веб-разра-ботчиков, которым требуется обеспечить совместимость своих веб-приложений со всеми броузерами. Вводный раздел был посвящен подмножествам языка, остальная же часть этой главы описывает расширения языка. Поскольку они нестандартизованы, они подаются в виде учебных материалов, с меньшим количеством строгих определений, чем особенности языка, описываемые в других главах книги. Подмножества JavaScript Большая часть подмножеств языка была определена с целью обеспечения безопасности при выполнении программного кода, полученного из непроверенных источников. Однако существует одно интересное подмножество языка, которое было создано по другим причинам. Мы рассмотрим его в первую очередь, а затем перейдем к подмножествам языка, цель которых заключается в обеспечении безопасности. В предыдущих главах подробно рассматривался базовый язык JavaScript, и вскоре мы перейдем ко второй части книги, в которой рассказывается о том, как JavaScript встраивается в веб-броузеры, и описывается обширнейший API клиентского JavaScript. JavaScript — это язык программирования для Веб, и большая часть программного кода на языке JavaScript написана для выполнения в веб-броузерах. Однако JavaScript — это быстрый и универсальный язык с широкими возможностями, и нет никаких причин, по которым JavaScript не мог бы использоваться для решения других задач программирования. Поэтому, прежде чем перейти к знакомству с клиентским JavaScript, мы коротко рассмотрим две другие реализации JavaScript. Rhino — это интерпретатор JavaScript, написанный на языке Java, что обеспечивает программам на языке JavaScript доступ ко всем библиотекам языка Java. Интерпретатор Rhino рассматривается в разделе 12. Интерпретатор Node рассматривается в разделе 12. Серверный JavaScript Название главы говорит, что она посвящена «серверному» JavaScript, а обычно для создания серверов и для управления ими используются интерпретаторы Node и Rhino. Но под словом «серверный» можно также понимать «все, что за пределами веб-броузера». Программы, выполняемые под управлением Rhino, способны создавать графические интерфейсы пользователя, используя фреймворк Swing для языка Java. А интерпретатор Node может выполнять программы на языке JavaScript, способные манипулировать файлами подобно тому, как это делают сценарии командной оболочки. Цель этой короткой главы состоит в том, чтобы осветить некоторые направления за пределами веб-броузеров, где может использоваться язык JavaScript. Здесь не предпринимается попытка в полном объеме охватить интерпретатор Rhino или Node, а обсуждаемые здесь прикладные интерфейсы не описываются в справочном разделе. Очевидно, что в одной главе невозможно сколько-нибудь полно описать платформу Java или POSIX API, поэтому раздел об интерпретаторе Rhino предполагает, что читатели имеют некоторое знакомство с Java, а раздел об интерпретаторе Node предполагает знакомство с низкоуровневыми прикладными интерфейсами Unix. Управление Java с помощью Rhino Rhino — это интерпретатор JavaScript, написанный на языке Java, цель которого — упростить возможность создания программ на языке JavaScript, которые могли бы использовать мощь платформы Java. Интерпретатор Rhino автоматически выполняет преобразование простых типов JavaScript в простые типы Java и наоборот, благодаря чему сценарии на языке JavaScript могут читать и изменять свойства и вызывать методы объектов на языке Java. Rhino определяет несколько важных глобальных функций, не являющихся частью базового языка JavaScript: Объект Window В главе 13 был представлен объект Window и отмечена центральная роль, которую этот объект играет в клиентском JavaScript: объект Window является глобальным объектом для клиентских JavaScript-программ. В этой главе будут рассмотрены свойства и методы объекта Window. Эти свойства определяют множество различных API, из которых лишь немногие имеют отношение к окну броузера, в честь которого этот объект получил имя Window. HTML-формы HTML -элемент и различные элементы ввода, такие как , и , занимают видное место в разработке клиентских сценариев. Эти HTML-элементы появились в самом начале развития Всемирной паутины, еще до появления языка JavaScript. Формы HTML — это механизм веб-приложений первого поколения, не требующий применения JavaScript. Ввод пользователя собирается в элементах форм; затем форма отправляется на сервер; сервер обрабатывает ввод и генерирует новую HTML-страницу обычно с новыми элементами форм для отображения на стороне клиента. Элементы HTML-форм по-прежнему остаются великолепным инструментом получения данных от пользователя, даже когда данные формы целиком обрабатываются JavaScript-сценарием на стороне клиента и не должны отправляться на сервер. С точки зрения программиста, разрабатывающего серверные сценарии, форма оказывается совершенно бесполезной, если в ней отсутствует кнопка отправки формы. Однако с точки зрения программиста, разрабатывающего клиентские сценарии, кнопка отправки вообще не нужна хотя все еще может использоваться. Серверные программы опираются на механизм отправки форм — они обрабатывают данные порциями, объем которых определяется формой, — и это ограничивает их интерактивные возможности. Клиентские программы опираются на механизм событий — они могут откликаться на события, возникающие в отдельных элементах форм, — и это позволяет обеспечить более высокую степень интерактивности. Например, клиентская программа может проверять ввод пользователя по мере нажатия клавиш. Или откликаться на выбор флажка, разрешая доступ к набору параметров, которые имеют смысл, только когда флажок отмечен. Ультрасовременные свойства CSS Когда я работал над этой главой, CSS находился в процессе революционных изменений: производители броузеров реализовали поддержку новых мощных свойств стиля, таких как border-radius, text-shadow, box-shadow и column-count. Другой качественно новой возможностью CSS стали веб-шрифты: новое CSS-правило font-face позволяет загружать и использовать нестандартные шрифты. Подробнее о шрифтах, которые свободно могут использоваться в веб-страницах, и о простом механизме их загрузки с серверов компании Google можно прочитать на странице code. Еще одной революционной разработкой в области каскадных таблиц стилей стал модуль «CSS Transitions». Этот проект стандарта определяет возможности, позволяющие преобразовать в анимационные эффекты любые динамические изменения стилей CSS в документе. Когда поддержка этого стандарта будет реализована достаточно широко, это позволит избавиться от программного кода, воспроизводящего анимационные эффекты, связанные со сменой стилей CSS, как показано в разделе 16. Положения модуля «CSS Transitions» реализованы во всех текущих броузерах, кроме IE, но в именах свойств стиля присутствуют префиксы производителей. Проект родственного стандарта «CSS Animations», использующий модуль «CSS Transitions» в качестве основы, определяет более сложные анимационные последовательности. В настоящее время «CSS Animations» реализован только в веб-броузерах, основанных на механизме Webkit. Ни один из этих стандартов не описывается в данной главе, но вам, как веб-разработчикам, нужно знать о существовании этих технологий. Другим проектом, касающимся CSS, и о котором должны знать веб-разработчики, является стандарт «CSS Transforms», позволяющий определять двухмерные преобразования вращение, масштабирование, перемещение, а также их комбинации, определяемые в матричном виде , применяемые к любым элементам. Все текущие броузеры включая версии IE9 и выше поддерживают этот проект с добавлением приставок, соответствующих производителям. Более того, в Safari реализована поддержка расширения, позволяющего выполнять трехмерные преобразования, но пока неясно, последуют ли этому другие броузеры. Работа с протоколом HTTP Протокол передачи гипертекста Hypertext Transfer Protocol, HTTP определяет, как веб-броузеры должны запрашивать документы, как они должны передавать информацию веб-серверам и как веб-серверы должны отвечать на эти запросы и передачи. Очевидно, что веб-броузеры очень много работают с протоколом HTTP. Тем не менее, как правило, сценарии не работают с протоколом HTTP, когда пользователь щелкает на ссылке, отправляет форму или вводит URL в адресной строке. Однако JavaScript-код способен работать с протоколом HTTP. HTTP-запросы могут инициироваться, когда сценарий устанавливает значение свойства location объекта Window или вызывает метод submitQ объекта Form. В обоих случаях броузер загружает в окно новую страницу. Такого рода взаимодействие с протоколом HTTP может быть вполне оправданным в веб-страницах, состоящих из нескольких фреймов, но в этой главе мы будем говорить совсем о другом. Здесь мы рассмотрим такое взаимодействие JavaScript-кода с веб-сервером, при котором веб-броузер не перезагружает содержимое окна или фрейма. Термин Ajax описывает архитектуру веб-приложений, отличительной чертой которых является работа с протоколом HTTP. Возможность избежать перезагрузки страницы что было привычным на первых этапах развития Всемирной паутины позволяет создавать веб-приложения, близкие по своему поведению к обычным приложениям. Веб-приложение может использовать технологии Ajax для передачи на сервер результатов взаимодействия с пользователем или для ускорения запуска приложения, отображая сначала простую страницу и подгружая дополнительные данные и компоненты страницы по мере необходимости. Термин Comet описывает похожую архитектуру веб-приложений, также использующих протокол HTTP. Если веб-приложению потребуется отвечать на сообщения, отправляемые сервером, оно сможет использовать приемы Ajax для отправки или запроса данных. В архитектуре Ajax клиент «вытягивает» данные с сервера. В архитектуре Comet сервер «навязывает» данные клиенту. Иногда архитектуру Comet называют «Server Push», «Ajax Push» и «HTTP Streaming». Есть множество способов реализации архитектур Ajax и Comet, и эти базовые реализации иногда называют транспортами. Элемент , например, имеет свойство src. Когда сценарий записывает в это свойство URL-адрес, инициируется HTTP-запрос GET и выполняется загрузка содержимого с этого URL-адреса. Таким образом, сценарий может отправлять информацию веб-серверу, добавляя ее в виде строки запроса в URL-адрес изображения и устанавливая свойство src элемента. В ответ на этот запрос веб-сервер должен вернуть некоторое изображение, которое, например, может быть невидимым: прозрачным и размером 1×1 пиксел. Элемент обладает большей гибкостью. При использовании элемента в качестве транспорта Ajax сценарий сначала добавляет в URL-адрес информацию, предназначенную для веб-сервера, а затем записывает этот URL-адрес в свойство src тега. Сервер создает HTML-документ, содержащий ответ на запрос, и отправляет его обратно веб-броузеру, который выводит ответ в теге. При этом элемент необязательно должен быть видимым для пользователя — он может быть сокрыт, например, средствами таблиц стилей CSS. Сценарий может проанализировать ответ сервера, выполнив обход документа в элементе. Обратите внимание, что взаимодействие с документом ограничивается политикой общего происхождения, о которой рассказывается в разделе 13. Библиотека jQuery В языке JavaScript чрезвычайно простой базовый и весьма сложный клиентский API, который к тому же отягощен многочисленными несовместимостями между броузерами. С выходом IE9 исчезли самые неприятные несовместимости, но многие программисты считают, что веб-приложения удобнее писать с использованием фреймворков или вспомогательных библиотек на языке JavaScript, упрощающих решение типичных задач и скрывающих различия между броузерами. На момент написания этих строк одной из наиболее популярных и широко используемых была библиотека jQuery. К счастью, библиотека jQuery весьма стабильна и достаточно мала, чтобы ее можно было описать в этой книге. В этой главе дается обстоятельное введение, а в четвертой части вы найдете краткий справочник по библиотеке jQuery. В справочнике отсутствуют отдельные статьи для методов из библиотеки jQuery, однако в статье jQuery даются краткие описания всех методов. Библиотека jQuery упрощает поиск элементов документа и облегчает манипулирование ими: добавление содержимого, изменение HTML-атрибутов и CSS-свойств, определение обработчиков событий и воспроизведение анимационных эффектов. Она также имеет вспомогательные функции поддержки архитектуры Ajax, позволяющие выполнять динамические HTTP-запросы, и функции общего назначения для работы с объектами и массивами. Как следует из ее имени, основу библиотеки jQuery составляет реализация механизма запросов. Типичный запрос использует CSS-селектор, идентифицирующий множество элементов документа, и возвращает объект, представляющий эти элементы. Данный возвращаемый объект имеет множество удобных методов для выполнения операций над всей группой выбранных элементов. Всякий раз, когда это возможно, эти методы возвращают объект, относительно которого они вызывались, что позволяет использовать прием составления цепочек из вызовов методов. Эти два имени — все, что библиотека jQuery добавляет в глобальное пространство имен. Прикладные интерфейсы HTML5 Под термином HTML5 обычно подразумевается последняя версия спецификации языка разметки HTML, но этот термин также используется для обозначения целого комплекса веб-технологий, которые разрабатываются и определяются как часть языка разметки HTML или сопутствующие ему. Официально этот комплекс технологий называется «Open Web Platform». Однако на практике чаще используется сокращенное название «HTML5», и в данной главе мы будем использовать его именно в этом смысле. Такие приложения могут отображать карты, маршруты и другую информацию, связанную с текущим местонахождением пользователя. При этом, конечно, возникает важная проблема соблюдения тайны частной информации, поэтому броузеры, поддерживающие прикладной интерфейс Geolocation, всегда запрашивают у пользователя подтверждение, прежде чем передать JavaScript-программе информацию о физическом местонахождении пользователя.
Серверный JavaScript Название главы говорит, что она посвящена «серверному» JavaScript, а обычно для создания серверов и для управления ими используются интерпретаторы Node и Rhino. Очевидно, что в одной главе невозможно сколько-нибудь полно описать платформу Java или POSIX API, поэтому раздел об интерпретаторе Rhino предполагает, что читатели имеют некоторое знакомство с Java, а раздел об интерпретаторе Node предполагает знакомство с низкоуровневыми прикладными интерфейсами Unix. Издание охватывает стандарты ECMAScript 5 и HTML5. Жанр: Количество страниц: 304 Описание: Настоящее пособие посвящено издательской системе LaTeX, предназначенной для набора и верстки текстов с формулами. Интерпретатор Node рассматривается в разделе 12. Положения модуля «CSS Transitions» реализованы во всех текущих броузерах, кроме IE, но в именах свойств стиля присутствуют префиксы производителей. В архитектуре Ajax клиент «вытягивает» данные с сервера. Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами. Произведение относится к жанру Компьютеры: прочее. С выходом IE9 исчезли самые неприятные несовместимости, но многие программисты считают, что веб-приложения удобнее писать с использованием фреймворков или вспомогательных библиотек на языке JavaScript, упрощающих решение типичных задач и скрывающих различия между броузерами. Сохранение данных на стороне клиента 21.