Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание
- Название:JavaScript. Подробное руководство, 6-е издание
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2012
- Город:СПб
- ISBN:978-5-93286-215-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.
JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Расширение Е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 =
Водород</еlеment>
Гелий</еlement>
/Литий
;
// Добавить новый элемент в таблицу
pt.element += Бериллий
Синтаксис литералов XML в расширении Е4Х в качестве экранирующих символов использует угловые скобки, что позволяет помещать в разметку XML произвольные выражения на языке JavaScript. Ниже демонстрируется еще один способ создания точно такого же элемента XML, как в примере выше:
pt = ; // Создать пустую таблицу
var elements = ["Водород", "Гелий", "Литий"]; // Добавить элементы
// Создать теги XML, используя содержимое массива
for(var n = 0; n < elements.length; n++) {
pt.element += {elements[n]};
}
В дополнение к синтаксису литералов можно также извлекать данные из строк с разметкой XML. Следующий пример добавляет в периодическую таблицу еще один элемент:
pt.element += new XML('Бop');
При работе с фрагментами XML вместо конструктора XML()
используется конструктор XMLList():
pt.element += new XMLList( Углерод' +
' Азот');
После создания XML-документа для доступа к его содержимому можно использовать интуитивно понятный синтаксис Е4Х:
var elements = pt.element; // Вернет список всех тегов
var names = pt.element.name; // Список всех тегов
var n = names[0]; // "Водород": содержимое тега с номером 0.
Кроме того, расширение Е4Х добавляет новый синтаксис для работы с объектами XML. Оператор .. - это оператор доступа к вложенным элементам. Его можно использовать вместо привычного оператора . доступа к членам:
// Другой способ получить список всех тегов
var names2 = pt..name;
Расширение E4X позволяет использовать даже оператор шаблона:
// Получить все вложенные теги .
// Это еще один способ получить список всех тегов <���пате>.
var names3 = pt.element.*;
Расширение E4X отличает имена атрибутов от имен тегов с помощью символа @ (этот синтаксис заимствован из языка XPath). Например, значение атрибута можно запросить, как показано ниже:
// Получить атомное число гелия
var atomicNumber = pt.element[1].@id;
Оператор шаблона для имен атрибутов имеет вид
// Список свех атрибутов всех тегов
var atomicNums = pt.element.@*;
Расширение E4X включает даже мощные и удивительно выразительные синтаксические конструкции для фильтрации списков с помощью произвольных выражений-предикатов:
// Отфильтровать список всех элементов так, чтобы
// он включал только элементы с атрибутом id < 3
var lightElements = pt.element.(@id < 3);
// Отфильтровать список всех тегов так, чтобы он включал только те.
// имена которых начинаются с символа "Б". Затем создать список тегов <���пате>
// из оставшихся тегов .
var bElementNames = pt.element.(name.charAt(0) == 'Б').name;
Цикл fог/each
, с которым мы познакомились выше в этой главе (раздел 11.4.1), в расширении Е4Х дополнен возможностью итераций по спискам тегов и атрибутов XML. Напомню, что цикл for/each
похож на цикл for/in
, за исключением того, что вместо итераций по свойствам объекта он выполняет итерации по значениям свойств:
// Вывести названия всех элементов периодической таблицы
for each (var е in pt.element) {
console.log(e.name);
}
// Вывести атомные числа элементов
for each (var n in pt.element.@*) console.log(n);
В расширении E4X выражения могут присутствовать слева от оператора присваивания. Это позволяет изменять существующие и добавлять новые теги и атрибуты:
// Изменить тег для Водорода - добавить в него новый атрибут
// и новый дочерний элемент, чтобы он выглядел так:
//
//
// Водород
// 1.00794
//
//
pt.element[0].@symbol = "B";
pt.element[0].weight = 1.00794;
Так же легко можно удалять теги и атрибуты, используя стандартный оператор delete:
delete pt.element[0].©symbol; // удалить атрибут
delete pt..weight; // удалить все теги
Расширение E4X реализовано так, что позволяет выполнять большинство типичных операций с документами XML с помощью привычного синтаксиса языка. В Е4Х также имеются методы, которые можно вызывать относительно объектов XML. Например, метод insertChildBefore():
pt.insertChildBefore(pt.element[ 1],
Дeйтepий);
Интервал:
Закладка: