Книга: JavaScript. Подробное руководство, 6-е издание
Сноски из книги
· #1Этот формат знаком программистам на языке Java как тип double. Этот-же формат используется для представления чисел типа double в большинстве современных реализаций языков С и С++)
· #2Согласно стандарту ECMAScript 3 функция parseInt() может выполнять преобразование строки, начинающейся с символа «О» (но не «Ох» или «ОХ»), в восьмеричное или десятичное число. Поскольку поведение функции четко не определено, следует избегать использования функции parseInt() для интерпретации строк, начинающихся с «О», или явно указывать основание системы счисления! В ECMAScript 5 функция parselnt() будет интерпретировать строки как восьмеричные числа, только если ей во втором аргументе явно указать основание 8 системы счисления.)
· #3Программистам на C++ следует обратить внимание, что delete в JavaScript совершенно не похож на delete в C++. В JavaScript освобождение памяти выполняется сборщиком мусора автоматически, и беспокоиться о явном освобождении памяти не надо. Поэтому в операторе delete в стиле C++, удаляющем объекты без остатка, нет необходимости.
· #4Тот факт, что выражения в метках case вычисляются во время выполнения программы, существенно отличает инструкцию switch в языке JavaScript (и делает ее менее эффективной) от инструкции switch в С, C++ и Java. В этих языках выражения case должны быть константами, вычисляемыми на этапе компиляции, и иметь один тот же тип. Кроме того, инструкция switch в этих языках часто может быть реализована с использованием высокоэффективной таблицы переходов.
· #5Как мы увидим, когда будем знакомиться с инструкцией continue в разделе 5.6.3, этот цикл while не является точным эквивалентом цикла for.
· #6Реализации, следующие стандарту ECMAScript 3, в этом случае могут возбуждать исключение ТуреЕrror.
· #7К самому внутреннему по вложенности охватывающему обработчику исключений. -Прим. науч. ред.
· #8Дуглас Крокфорд (Douglas Crockford) считается первым, кто реализовал функцию, создающую объекты таким способом. См. http://javascript.crockford.com/prototypal.html.
· #9Функция extend(), представленная здесь, реализована правильно, но она не компенсирует хорошо известную проблему в Internet Explorer. Более надежная версия функции extend() будет представлена в примере 8.3.
· #10И в последних версиях реализации стандарта ECMAScript 3 в основных броузерах, кроме IE.
· #11Некоторые реализации JavaScript могут иметь менее строгие требования. Например, в броузере Firefox допускается наличие «условных определений функций» внутри инструкций if.
· #12Термин был введен Мартином Фаулером (Martin Fowler). См. http://martinfowler.com/ dslwip/MethodChaining.html.
· #13Это может показаться не столь интересным, если вы не знакомы с такими языками, как Java, в которых функции являются частью программы, но не могут управляться программой.
· #14Это старый термин, который отражает тот факт, что переменные функции привязаны к цепочке областей видимости, вследствие чего функция образует «замыкание» по своим переменным.
· #15(Если эта тема вам любопытна, вероятно, вас заинтересует возможность использования (или хотя бы знакомства) библиотеки Functional JavaScript Оливера Стила (Oliver Steel), которую можно найти по адресу: http://osteele.com/sources/javascript/functional/
Этот пример основан на примере для языка Java, написанном Джошуа Блохом (Joshua Bloch) и доступном по адресу: http://jcp.org/aboutJava/communityprocess/jsr/tiger/enum.html.)
· #17(То есть являются эквивалентными копиями-экземплярами одного класса. - Прим. на- уч.ред.)
· #18См. Э. Гамма и др. «Приемы объектно-ориентированного проектирования. Паттерны проектирования» или Дж. Блох «Java. Эффективное программирование».
· #19В число особенностей регулярных выражений языка Perl, которые не поддерживаются в ECMAScript, входят флаги s (однострочный режим) и х (расширенный синтаксис); управляющие последовательности а, е, 1, и, L, U, Е, (), А, Z, z и G; якорь (?<= позитивной ретроспективной проверки и якорь (?<! негативной ретроспективной проверки; комментарии^# и другие расширенные конструкции, начинающиеся с (?.
· #20За исключением класса символов (квадратных скобок), где Ь соответствует символу «забой».
· #21Точнее, любого пробельного символа. - Прим. науч. ред.
· #22Генераторы иногда называют «итераторами-генераторами», чтобы отличить их от создающих их функций-генераторов. В этой главе вместо термина «итераторы-генераторы» мы будем использовать термин «генераторы». В других источниках вы можете встретить термин «генератор», обозначающий одновременно и функции-генераторы, и итераторы-генераторы.
· #23На момент написания этих строк выражения-генераторы не поддерживались в Rhino.
· #24На момент написания этих строк данная особенность не поддерживалась в Rhino.
· #25Расширение Е4Х определяется стандартром ЕСМА-357. Официальную спецификацию можно найти по адресу: http//www.ecma-interational.org/publications/standarts/Ecma-357.htm
· #26Клиентский JavaScript также является асинхронным и опирается на использование событий, поэтому вам будет проще понять примеры, которые приводятся в этом разделе, после того как вы прочтете вторую часть книги и познакомитесь с особенностями создания клиентских программ на языке JavaScript.
· #27Интерпретатор Node реализует протокол CommonJS работы с модулями, описание которого можно найти по адресу http://www.commonjs.org/specs/modules/LO/.
· #28Интерактивные веб-страницы, взаимодействующие с серверными CGI-сценариями посредством форм HTML также можно считать «веб-приложениями», и они могут быть написаны без применения JavaScript. Однако это не тот тип веб-приложений, которые мы будем обсуждать в этой книге.
· #29В некоторых броузерах имеется механизм предотвращения атак типа отказа в обслуживании и случайных зацикливаний, который выводит перед пользователем окно запроса, если сценарий или обработчик события выполняется слишком долго, и позволяет прервать выполнение зациклившегося сценария.
· #30Справедливости ради следует отметить, что версия IE9 поддерживает и элемент <canvas>, и метод addEventListener().
· #31Похожая статья в Википедии на русском языке: http://ru.wikipedia.org/wiki/CpaeHe-ние_браузеров_(НТМЬ5). - Прим. перев.
· #32Обычно такие окна называют модальными. - Прим, науч.ред.
· #33Этот последний пункт является небольшим отступлением от стандартов ES3 и ES5, но это необходимо для поддержки взаимодействующих контекстов выполнения в клиентском JavaScript.
· #34Определение селекторов CSS3 можно найти по адресу http://www.w3.org/TR/css3-selec-tors/.
· #35Стандарт «Selectors АРІ» не является частью стандарта HTML5, но тесно связан с ним. Подробности смотрите по адресу http://www.w3.org/TR/selectors-api/.
· #36Самостоятельная версия библиотеки Sizzle доступна по адресу http://sizzlejs.com.
· #37http://www.w3.org/TR/ElementTraversal.
· #38IE поддерживает возможность расширения прототипов объектов Element, HTMLDocument и Text, но не поддерживает для объектов Node, Document, HTMLElement и всех подтипов типа HTMLElement
· #39Список поддерживаемых команд можно найти по адресу http://www.quirksmode.org/ йот/execCommand.html.
· #40Фреймворки YUI и Dojo включают такие компоненты редакторов. Список других решений можно найти на странице http://en.wikipedia.org/wiki/Online_rich-text_editor.
· #41Рекомендуемое издание: Эрик Мейер «CSS - каскадные таблицы стилей. Подробное руководство», 3-є издание - Пер. с англ. - СПб.: Символ-Плюс, 2008.
· #42Некоторые источники, включая спецификацию HTML5, различают обработчики событий и приемники событий, в соответствии со способом, которым они были зарегистрированы. В этой книге мы будем использовать эти два термина как синонимы.
· #43Стандарты определяют целую иерархию объектов событий для событий различных типов. Интерфейс Event описывает «простые» события, которые не сопровождаются дополнительной информацией. Например, подкласс MouseEvent описывает дополнительные поля, доступные в объектах событий, передаваемых при возбуждении события от мыши, а подкласс Key Event описывает поля, которые можно использовать при обработке событий от клавиатуры. Описания всех этих классов в данной книге помещены в общую справочную статью Event.
· #44Единственным часто используемым событием, в имени которого присутствует приставка «DOM», является событие «DOMContentLoaded». Это событие было введено компанией Mozilla и никогда не являлось частью стандарта «DOM Events».
· #45Стандарт «DOM Level 2» не определяет порядок вызова обработчиков, но все текущие броузеры вызывают обработчики в порядке их регистрации, а текущий проект стандарта «DOM Level 3» определяет именно такой порядок вызова.
Объект события, определяемый в библиотеке jQuery (глава 19), вместо свойства имеет метод defaultPrevented().
· #47Довольно рискованное решение: если будущие версии стандарта не будут соответствовать проекту спецификации, имевшейся на момент написания этих строк, это может привести к нежелательным последствиям и сделать пример неработоспособным.
· #48Ajax - это аббревиатура от Asynchronous JavaScript and XML (асинхронный JavaScript и XML). Этот термин предложил Джесси Джеймс Гаррет (Jesse James Garrett) и впервые использовал его в своей статье «Ajax: A New Approach to Web Applications» в феврале 2005 года (http://wwwMdaptivepath.com/publications/essays/archives/000385.php) (От переводчика: перевод этой статьи на русский язык можно найти по адресу http://galleo. ги/articles,fwl60.). В течение многих лет термин «Ajax» был громким словом, которое употребляли к месту и не к месту, а сейчас это всего лишь удобный термин, обозначающий архитектуру веб-приложения, опирающегося в своей работе на НТТР-запросы.
· #49Имя Comet было предложено Алексом Расселом (Alex Russell) в статье «Comet: Low Latency Data for the Browser» (http://infrequently.org/2006/03/comet-low-latency-data-for-the-browser/). Вероятно, выбирая такое имя, Алекс Рассел хотел обыграть термин Ajax: дело в том, что в США Comet и Ajax являются названиями чистящих средств.
· #50Такие изображения иногда называют веб-жучками (web bugs). Они пользуются дурной славой из-за проблем с безопасностью, когда используются для обмена информацией со сторонним сервером, не тем, откуда была загружена страница. Одно из типичных применений веб-жучков - подсчет числа посещений и анализа трафика веб-сервера.
· #51Термин «JSONP» предложил Боб Ипполито (Bob Ippolito) в 2005 году (http://bob.py-thonmac.org/archives/2005/12/05/remote-json-jsonp/).
· #52В число широко используемых входят также не описываемые в этой книге библиотеки Prototype, YUI и dojo. Еще большее количество библиотек можно отыскать в Интернете, выполнив поиск по фразе «JavaScript libraries».
· #53Если Вы определяете собственное имя $ в своих сценариях или используете другую библиотеку, такую как Prototype, тоже использующую имя $, Вы можете вызвать метод JQuery.noConflict(), чтобы восстановить оригинальное имя $)
· #54На момент написания этой главы текущей версией библиотеки jQuery была 1.4.2. Когда книга готовилась к печати, была выпущена версия jQuery 1.5. Изменения в jQuery 1.5 в основном касаются механизма поддержки архитектуры Ajax и будут упоминаться в разделе 19.6.
· #55В библиотеке jQuery термин «связывание» используется для обозначения регистрации обработчиков событий. Стандарт ECMAScript 5 и многие фреймворки на языке JavaScript определяют в объектах функций метод bind() (раздел 8.7.4) и используют этот термин для обозначения связи функций с объектами, относительно которых они вызываются. Версия метода Function. bind() в библиотеке jQuery является вспомогательной функцией с именем jQuery. ргоху(), которая описывается в разделе 19.7.
· #56Идея этого примера была подсказана приложением Halfnote, написанным Аароном Будманом (Aaron Boodman). Приложение Halfnote было одним из первых автономных веб-приложений.
· #57На момент написания этих строк в версии 5 броузера Google Chrome тени были реализованы с ошибкой, и их смещения были подвержены действию преобразований.
· #58Спецификация «Web Workers» изначально была частью спецификации HTML5, но затем была выделена в отдельный, независимый, хотя и тесно связанный со стандартом, документ. На момент написания этих строк проект спецификации был доступен по адресам http://dev.w3.org/html5/workers/ и http://whatwg.org/ww.
· #59На момент написания этих строк броузер Chrome не запрашивал разрешение у пользователя, но требовал, чтобы он был запущен с ключом командной строки — unlimited-quota-for-files.
· #60В 1972-1978 гг. телекомпания WGBH-TV в Бостоне выпускала детское телешоу «ZOOM». Детям предлагалось после шоу «выключить телевизор и сделать то, о чем рассказывалось в передаче...». Дети, обычно семеро, участвовавшие в шоу, играли в игры, ставили пьесы, рассказывали стихи, ставили научные эксперименты, вели беседы на такие темы, как больницы, предрассудки и другие, предлагаемые телезрителями. Передача имела призыв со словами: «Напишите на конверте ZOOM, Зет-Дабл-Оу-М, Бокс 3-5-0, Бостон, Масс 0-2-1-3-4 и отправьте его на ZOOM!». Весь текст проговаривался, кроме индекса, который пропевался. Описание в Википедии: http://en.wikipedia.org/wiki/ZOOM_ (1972_TV_series). - Прим, перев.
· #61В других языках программирования эта операция может называться «fold» или «inject». Однако в русскоязычной литературе эти термины переводятся как «свертка» (Прим. перев.))
· #62Имя свойства указывается в форме единственного числа. - Прим, перев.
· #63В клиентском JavaScript нет типа TypedArray. Автор использовал это символическое имя для более краткого обозначения типизированных массивов. - Прим.ред.
- Дэвид Флэнаган JavaScript. Подробное руководство, 6-е издание
- Предисловие
- Глава 1. Введение в JavaScript
- I Базовый JavaScript
- II Клиентский JavaScript
- III Справочник по базовому JavaScript
- IV Справочник по клиентскому JavaScript
- Алфавитный указатель
- ...
- Сноски из книги
- Содержание книги
- Популярные страницы