Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

}

finally {

// Блок finally действует как обычно

}

Когда возникает какое-либо исключение, по очереди проверяются все блоки

catch
. Исключение присваивается именованному параметру блока
catch
и вычисляется условное выражение. Если оно возвращает
true
, выполняется тело этого блока
catch
, а все остальные блоки
catch
пропускаются. Если блок
catch
не имеет условного выражения, он ведет себя как блок с условным выражением
if true
и выполняется всегда, если перед ним не был встречен блок
catch
, удовлетворяющий условию. Если условное выражение присутствует во всех блоках
catch
и ни в одном из них условное выражение не вернуло
true
, исключение продолжит распространение как необработанное. Обратите внимание, что, поскольку условное выражение уже находится в круглых скобках блока
catch
, его не требуется еще раз заключать в скобки, как в обычных инструкциях
if
.

11.7. Е4Х: ECMAScript for XML

Расширение ECMAScript for XML, более известное как E4X, - это стандартное расширение [25] JavaScript, определяющее ряд мощных особенностей для обработки XML-документов. Расширение Е4Х поддерживается интерпретаторами Spider-monkey 1.5 и Rhino 1.6. Из-за того что оно не получило широкой поддержки у производителей броузеров, расширение Е4Х, вероятно, лучше относить к серверным технологиям, основанным на интерпретаторах Spidermonkey или Rhino.

25

Расширение Е4Х определяется стандартром ЕСМА-357. Официальную спецификацию можно найти по адресу: http//www.ecma-interational.org/publications/standarts/Ecma-357.htm

Расширение Е4Х представляет XML-документ (или элементы и атрибуты XML-документа) как объект XML, и представляет фрагменты XML (несколько элементов XML, не имеющих общего родителя) в виде родственного объекта XMLList. В этом разделе мы познакомимся с несколькими способами создания и обработки объектов XML. Объекты XML - это совершенно новый тип объектов, для работы с которыми в Е4Х предусмотрен (как мы увидим) специальный синтаксис. Как известно, для всех стандартных объектов JavaScript, не являющихся функциями, оператор

typeof
возвращает строку «
object
». Объекты XML, подобно функциям, отличаются от обычных объектов JavaScript, и для них оператор
typeof
возвращает строку "xml". Важно понимать, что объекты XML никак не связаны с объектами DOM (Document Object Model - объектная модель документа), которые используются в клиентском JavaScript (глава 15). Стандарт Е4Х определяет дополнительные средства для преобразования XML-документов и элементов между представлениями Е4Х и DOM, но броузер Firefox не реализует их. Это еще одна причина, почему расширение Е4Х лучше относить к серверным технологиям.

Этот раздел представляет собой краткое учебное руководство по расширению Е4Х и не должен рассматриваться как полноценное его описание. В частности, объекты XML и XMLList имеют множество методов, которые вообще не будут упоминаться здесь. Их описание также отсутствует в справочном разделе. Тем из вас, у кого появится желание использовать расширение Е4Х, за более полной информацией необходимо обращаться к официальной спецификации.

Расширение Е4Х определяет совсем немного новых синтаксических конструкций. Самая заметная часть нового синтаксиса заключается

в возможности использования разметки XML непосредственно в программном коде JavaScript и включения в него литералов XML, как показано ниже:

// Создать объект XML

var pt = <periodictable>

<element іd="1"><name>Водород</name></еlеment>

<element іd="2"><name>Гелий</name></еlement>

<element id="3"><name>/Литий</name></element>

</periodictable>;

// Добавить новый элемент в таблицу

pt.element += <element іd="4"><name>Бериллий</name></element;

Синтаксис литералов XML в расширении Е4Х в качестве экранирующих символов использует угловые скобки, что позволяет помещать в разметку XML произвольные выражения на языке JavaScript. Ниже демонстрируется еще один способ создания точно такого же элемента XML, как в примере выше:

pt = <periodictable></periodictable>; // Создать пустую таблицу

var elements = ["Водород", "Гелий", "Литий"]; // Добавить элементы

// Создать теги XML, используя содержимое массива

for(var n = 0; n < elements.length; n++) {

pt.element += <element id={n+1}><name>{elements[n]}</name></element>;

}

В дополнение к синтаксису литералов можно также извлекать данные из строк с разметкой XML. Следующий пример добавляет в периодическую таблицу еще один элемент:

pt.element += new XML('<element id="5"><name>Бop</name></element>');

При работе с фрагментами XML вместо конструктора

XML
используется конструктор
XMLList:

pt.element += new XMLList( <element id="6"><name>Углерод</namex/element>' +

' <element id="7"xname>Азот</name></element>');

После создания XML-документа для доступа к его содержимому можно использовать интуитивно понятный синтаксис Е4Х:

var elements = pt.element; // Вернет список всех тегов <element>

var names = pt.element.name; // Список всех тегов <name>

var n = names[0]; // "Водород": содержимое тега <name> с номером 0.

Кроме того, расширение Е4Х добавляет новый синтаксис для работы с объектами XML. Оператор ..
– это оператор доступа к вложенным элементам. Его можно использовать вместо привычного оператора . доступа к членам:

// Другой способ получить список всех тегов <name>

Поделиться:
Популярные книги

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

И в аду есть герои

Панов Вадим Юрьевич
5. Тайный Город
Фантастика:
боевая фантастика
9.19
рейтинг книги
И в аду есть герои

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Проклятый Лекарь. Том 2

Молотов Виктор
2. Анатомия Тьмы
Фантастика:
фэнтези
попаданцы
7.00
рейтинг книги
Проклятый Лекарь. Том 2

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Железное пламя

Яррос Ребекка
Фантастика:
фэнтези
5.00
рейтинг книги
Железное пламя

Отверженный. Дилогия

Опсокополос Алексис
Отверженный
Фантастика:
фэнтези
7.51
рейтинг книги
Отверженный. Дилогия

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Моров. Том 8

Кощеев Владимир
7. Моров
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Моров. Том 8