Книга: Выразительный JavaScript
Стандарт
Стандарт
Использовать загадочные цифры для представления типа узла – это подход не в стиле JavaScript. Позже мы встретимся с другими частями интерфейса DOM, которые тоже кажутся чуждыми и нескладными. Причина в том, что DOM разрабатывался не только для JavaScript. Он пытается определить интерфейс, не зависящий от языка, который можно использовать и в других системах – не только в HTML, но и в XML, который представляет из себя формат данных общего назначения с синтаксисом, напоминающим HTML.
Получается неудобно. Хотя стандарты – и весьма полезная штука, в нашем случае преимущество независимости от языка не такое уж и полезное. Лучше иметь интерфейс, хорошо приспособленный к языку, который вы используете, чем интерфейс, который будет знаком при использовании разных языков.
Чтобы показать неудобную интеграцию с языком, рассмотрим свойство childNodes
, которое есть у узлов DOM. В нём содержится объект, похожий на массив, со свойством length
, и пронумерованные свойства для доступа к дочерним узлам. Но это – экземпляр типа NodeList
, не настоящий массив, поэтому у него нет методов вроде forEach
.
Есть также проблемы, связанные с плохой продуманностью системы. К примеру, нельзя создать новый узел и сразу добавить к нему свойства или дочерние узлы. Сначала нужно его создать, затем добавить дочерние по одному, и в конце назначить свойства по одному, с использованием побочных эффектов. Код, плотно работающий с DOM, получается длинным, некрасивым и со множеством повторов.
Но эти проблемы не фатальные. JavaScript позволяет создавать абстракции. Легко написать вспомогательные функции, позволяющие выражать операции более понятно и коротко. Вообще, такого рода инструменты предоставляют много библиотек, направленных на программирование для браузера.
- «Вещи» как носители корпоративных стандартов
- Знание стандартов обслуживания покупателей, принятых в вашем магазине
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Стандартные потоки: stdin, stdout, stdeir, stdaux, stdprn.
- 7.1 Общая информационная модель и стандарт WBEM
- 7.9 Будущее управления хранилищами по версии ассоциации SNIA: стандарты SMI
- 8.2 Стандарт InfiniBand
- 6.2. Создание и автоматическое заполнение бланков стандартных документов
- Стандартные списки
- Глава 1 Стандарты и угрозы информационной безопасности
- Часть III Конструктор речевых модулей для скриптов и стандартов продаж Изменения в продажах и требования к речевым модул...
- БП стандарта AT