Библиотека Zepto предоставляет набор легковесных служебных функций, которые значительно упрощают работу с DOM, событиями и объектами JavaScript. Они предназначены для внутреннего использования, но доступны и для прямого применения в коде, обеспечивая компактность и удобство по сравнению с нативными методами.
$.extend$.extend используется для копирования свойств
одного объекта в другой. Она позволяет объединять объекты, что
особенно полезно при настройке параметров функций и плагинов.
var defaults = {color: 'red', size: 'medium'};
var options = {size: 'large', weight: 'bold'};
var settings = $.extend({}, defaults, options);
// settings = {color: 'red', size: 'large', weight: 'bold'}
true первым аргументом, будет выполнено
глубокое копирование, включая вложенные объекты.var obj1 = {a: {x: 1}};
var obj2 = {a: {y: 2}};
var result = $.extend(true, {}, obj1, obj2);
// result = {a: {x: 1, y: 2}}
$.each$.each используется для итерации по массивам и
объектам. Она схожа с нативными for...in и
forEach, но обеспечивает единый интерфейс для обоих типов
коллекций.
$.each([1, 2, 3], function(index, value) {
console.log(index, value);
});
$.each({name: 'John', age: 30}, function(key, value) {
console.log(key, value);
});
false из callback прекращает
цикл.$.map$.map позволяет трансформировать массивы и
объекты, возвращая новый массив с результатами функции.
var arr = [1, 2, 3];
var squared = $.map(arr, function(val) { return val * val; });
// squared = [1, 4, 9]
Особенность: если callback возвращает null или
undefined, элемент исключается из
результирующего массива.
$.proxy$.proxy используется для привязки контекста
this к функции. Это полезно при работе с
обработчиками событий.
var obj = {name: 'Zepto'};
function greet() { console.log(this.name); }
var bound = $.proxy(greet, obj);
bound(); // вывод: Zepto
Function.prototype.bind, но более
компактная и совместимая с Zepto.$.trim$.trim обрезает пробелы в начале и конце
строки, что упрощает работу с пользовательским вводом.
var str = " hello world ";
var trimmed = $.trim(str);
// trimmed = "hello world"
\n,
\t и \r.$.isFunction и родственные методыZepto предоставляет утилиты для проверки типов:
$.isFunction(function(){}); // true
$.isArray([1,2]); // true
$.isPlainObject({a:1}); // true
$.isWindow(window); // true
$.isFunction проверяет, является ли объект
функцией.$.isArray проверяет массивы.$.isPlainObject определяет объекты, созданные с
помощью {} или new Object(), исключая
DOM-элементы и встроенные объекты.$.isWindow проверяет, является ли объект глобальным
объектом окна.$.contains$.contains проверяет, является ли один элемент
родителем другого.
var parent = document.getElementById('parent');
var child = document.getElementById('child');
$.contains(parent, child); // true или false
$.type$.type возвращает точный тип объекта в
виде строки:
$.type(null); // "null"
$.type([]); // "array"
$.type({}); // "object"
$.type(/abc/); // "regexp"
typeof, который возвращает
"object" для массивов и null.$.noop$.noop — пустая функция, используется
как заглушка для callback-ов.
$.noop(); // ничего не делает
$.parseJSON$.parseJSON преобразует JSON-строку в
объект.
var obj = $.parseJSON('{"name":"Zepto"}');
// obj = {name: "Zepto"}
JSON.parse может отсутствовать.$.camelCase$.camelCase конвертирует CSS-свойства из
дефисной записи в camelCase.
$.camelCase('background-color'); // "backgroundColor"
Многие служебные функции Zepto оптимизированы для скорости и малых размеров:
$.fn для манипуляции DOM.on, off,
trigger).Служебные функции Zepto обеспечивают унифицированный, компактный и кросс-браузерный интерфейс для:
Их использование позволяет сократить объём кода, повысить читаемость и упростить создание собственных модулей на основе Zepto.