Zepto.js — легковесная библиотека, ориентированная на работу с DOM, событиями и AJAX, но она также содержит ряд утилит для работы с типами данных и их проверки. Эти функции полезны для упрощения условных конструкций и безопасного взаимодействия с различными значениями.
Zepto предоставляет несколько встроенных методов, которые помогают определить тип переменной:
$.isFunction(obj)
$.isArray(obj)
$.isPlainObject(obj)
$.isEmptyObject(obj)
$.isNumeric(obj)
Каждая из этих функций возвращает логическое значение
true или false в зависимости от типа
проверяемого объекта.
$.isFunction(obj)Проверяет, является ли переданный аргумент функцией. Используется для безопасного вызова переданных callback-функций или обработчиков событий.
var callback = function() {};
console.log($.isFunction(callback)); // true
var notCallback = {};
console.log($.isFunction(notCallback)); // false
Особенность метода в том, что он корректно распознаёт функции во всех современных браузерах, включая анонимные и стрелочные функции.
$.isArray(obj)Определяет, является ли объект массивом. Полезно при работе с коллекциями данных, получаемыми через AJAX или из DOM.
var arr = [1, 2, 3];
console.log($.isArray(arr)); // true
var obj = {a: 1};
console.log($.isArray(obj)); // false
Внутри Zepto эта проверка использует Array.isArray, если
он доступен, и резервный метод через проверку
Object.prototype.toString.call(obj) === '[object Array]'.
$.isPlainObject(obj)Проверяет, является ли объект “простым объектом”, созданным через
{} или new Object(), а не через
пользовательские конструкторы или встроенные классы.
console.log($.isPlainObject({})); // true
console.log($.isPlainObject(new Date())); // false
console.log($.isPlainObject([])); // false
Это важно для функций, которые работают только с объектами данных,
например, для расширения объектов через $.extend().
$.isEmptyObject(obj)Проверяет, содержит ли объект собственные свойства. Метод возвращает
true для объектов без ключей и false, если
хотя бы одно свойство присутствует.
console.log($.isEmptyObject({})); // true
console.log($.isEmptyObject({a: 1})); // false
Эта проверка особенно полезна при работе с AJAX-ответами или динамически формируемыми объектами, когда важно определить наличие данных.
$.isNumeric(obj)Определяет, является ли значение числом или числовой строкой. Метод корректно работает с отрицательными числами и строками с числами.
console.log($.isNumeric(42)); // true
console.log($.isNumeric('42')); // true
console.log($.isNumeric('42px')); // false
console.log($.isNumeric(NaN)); // false
Проверка учитывает как числа типа number, так и
строковые представления чисел, но исключает значения с лишними символами
или NaN.
$.type(obj)Помимо отдельных проверок, Zepto имеет универсальный метод
$.type(obj), который возвращает строковое обозначение типа
объекта:
console.log($.type({})); // "object"
console.log($.type([])); // "array"
console.log($.type(function(){})); // "function"
console.log($.type(null)); // "null"
console.log($.type(undefined)); // "undefined"
console.log($.type(123)); // "number"
console.log($.type('text')); // "string"
console.log($.type(true)); // "boolean"
Этот метод удобен для динамических проверок и позволяет строить универсальные обработчики данных без большого количества условных операторов.
Обработка AJAX-ответов:
$.getJSON('/data', function(response){
if ($.isPlainObject(response) && !$.isEmptyObject(response)) {
console.log('Получен корректный объект данных');
} else {
console.warn('Данные пусты или имеют некорректный формат');
}
});
Вызов callback-функций:
function executeCallback(cb){
if ($.isFunction(cb)) {
cb();
} else {
console.log('Аргумент не является функцией');
}
}
Работа с коллекциями элементов:
var items = $('#list li');
if ($.isArray(items)) {
console.log('Получен массив элементов');
} else {
console.log('Не массив, возможно Zepto-объект');
}
Методы проверки типов помогают писать безопасный код, снижая риск ошибок при работе с динамическими данными и DOM-элементами.
Функции проверки типов легко комбинируются с методами Zepto для
перебора элементов ($.each), фильтрации
(.filter) и расширения объектов ($.extend).
Например, можно безопасно объединять объекты, проверяя их перед
этим:
var defaults = {a: 1, b: 2};
var options = {b: 3, c: 4};
if ($.isPlainObject(options)) {
var config = $.extend({}, defaults, options);
console.log(config); // {a:1, b:3, c:4}
}
Такой подход позволяет минимизировать ошибки при работе с объектами и гарантировать корректную структуру данных.
Zepto.js, несмотря на компактность, предоставляет полный набор инструментов для проверки типов, что делает работу с данными более надёжной и предсказуемой, особенно в динамических сценариях с DOM и AJAX.