Проверка типов

Dom7 — это легковесная библиотека для работы с DOM, используемая в основном в связке с фреймворком Framework7. Несмотря на компактность, Dom7 предоставляет гибкие инструменты для манипуляции элементами, событийной модели и проверки данных. Проверка типов является важной частью работы с Dom7, так как библиотека оперирует коллекциями элементов и позволяет безопасно применять методы только к корректным объектам.


Проверка существования элементов

Методы Dom7 возвращают коллекции элементов, даже если по селектору ничего не найдено. Для безопасной работы с этими коллекциями необходимо проверять их длину:

const items = Dom7('.item');
if (items.length > 0) {
  // Элементы существуют, можно выполнять операции
  items.addClass('active');
}

Ключевой момент: коллекция Dom7 всегда ведет себя как массив, что позволяет применять к ней массивные методы и проверять наличие элементов через length.


Определение типа переменной

Dom7 предоставляет утилитарные функции для проверки типов данных, что важно при динамической работе с элементами или их атрибутами.

  • Dom7.isFunction(obj) — проверяет, является ли объект функцией.
  • Dom7.isArray(obj) — проверяет, является ли объект массивом.
  • Dom7.isObject(obj) — проверяет, является ли объект объектом, но не массивом и не null.
  • Dom7.isNode(obj) — проверяет, является ли объект DOM-элементом.
  • Dom7.isNodeList(obj) — проверяет, является ли объект NodeList (результат querySelectorAll).

Пример использования:

function handleElement(el) {
  if (Dom7.isNode(el)) {
    Dom7(el).addClass('highlight');
  } else if (Dom7.isArray(el)) {
    el.forEach(item => Dom7(item).addClass('highlight'));
  }
}

Важно: такие проверки предотвращают ошибки при передаче некорректных объектов в методы Dom7.


Проверка содержимого коллекции

Dom7 позволяет работать с несколькими элементами одновременно. Перед выполнением операций часто проверяют, что коллекция не пустая и содержит элементы нужного типа.

const links = Dom7('a.external');

if (links.length && Dom7.isNode(links[0])) {
  links.each(link => {
    Dom7(link).attr('target', '_blank');
  });
}

Метод .each применим только к коллекциям Dom7. Проверка типа первого элемента (links[0]) обеспечивает корректную работу методов библиотеки.


Проверка атрибутов и свойств

Для работы с атрибутами Dom7 предоставляет методы .attr() и .prop(). Проверка типов значений атрибутов предотвращает некорректные операции:

const input = Dom7('#username');
const value = input.val();

if (typeof value === 'string' && value.length > 0) {
  input.addClass('filled');
}

Особенности: val() всегда возвращает строку, поэтому проверка типа string гарантирует, что методы, предназначенные для строк, будут работать корректно.


Проверка событийных обработчиков

При работе с событиями Dom7 позволяет привязывать и удалять обработчики через .on() и .off(). Проверка типа обработчика обязательна:

function clickHandler(e) {
  console.log('Clicked', e.target);
}

const btn = Dom7('#submit');
if (Dom7.isFunction(clickHandler)) {
  btn.on('click', clickHandler);
}

Если обработчик не является функцией, попытка привязки вызовет ошибку. Проверка через Dom7.isFunction исключает такие случаи.


Комбинированные проверки

Dom7 часто применяется в динамических интерфейсах, где элементы и данные могут появляться и исчезать. Для безопасной работы используют комбинированные проверки:

const items = Dom7('.menu-item');

if (items.length && Dom7.isNode(items[0])) {
  items.each(item => {
    const text = Dom7(item).text();
    if (typeof text === 'string' && text.trim() !== '') {
      Dom7(item).addClass('has-text');
    }
  });
}

Такой подход гарантирует, что операции будут выполнены только над корректными элементами и значениями.


Встроенные проверки в методы Dom7

Некоторые методы Dom7 автоматически проверяют типы аргументов. Например:

  • .addClass(className) и .removeClass(className) проверяют, что className — это строка.
  • .css(property, value) проверяет тип value для корректного применения стилей.
  • .attr(name, value) проверяет имя атрибута как строку, а значение допускает строку или null.

Тем не менее, явные проверки с использованием Dom7.isFunction, Dom7.isNode, Dom7.isArray повышают надежность кода.


Резюме ключевых методов проверки типов

Метод Описание
Dom7.isFunction(obj) Проверка функции
Dom7.isArray(obj) Проверка массива
Dom7.isObject(obj) Проверка объекта (не массив, не null)
Dom7.isNode(obj) Проверка DOM-элемента
Dom7.isNodeList(obj) Проверка NodeList (querySelectorAll)

Эти методы позволяют строить безопасные и предсказуемые манипуляции с DOM, предотвращая ошибки типов и некорректное применение методов библиотеки.


Проверка типов в Dom7 — основа стабильной работы с динамическим DOM и коллекциями элементов, обеспечивающая гибкость при взаимодействии с различными объектами и данными.