Книга: JavaScript. Подробное руководство, 6-е издание

19.7. Вспомогательные функции

19.7. Вспомогательные функции

Библиотека jQuery определяет множество вспомогательных функций (и два свойства), которые могут вам пригодиться в ваших программах. Как вы увидите в списке ниже, для многих из этих функций теперь имеются эквиваленты в стандарте ECMAScript 5 (ES5). Функции в библиотеке jQuery были созданы еще до появления стандарта ES5 и действуют во всех броузерах. Ниже в алфавитном порядке перечислены вспомогательные функции:

jQuery.browser

Свойство browser является не функцией, а объектом, который можно использовать для определения типа броузера (раздел 13.4.5). Если сценарий выполняется в IE, свойство msie этого объекта будет иметь значение true. В Firefox и родственных ему броузерах значение true будет иметь свойство mozilla. В Safari и Chrome значение true будет иметь свойство webkit, а в броузере Opera значение true будет иметь свойство opera. В дополнение к этим свойствам объект browser имеет также свойство version, содержащее номер версии броузера. Приема определения типа броузера лучше стараться избегать, насколько это возможно, тем не менее это свойство можно использовать обхода ошибок, характерных для разных броузеров, как показано ниже:

if ($.browser.mozilla && parselnt($.browser.version) < 4) {
  // Здесь обрабатывается гипотетическая ошибка в Firefox...
}
jQuery.contains()

Эта функция принимает в аргументах два элемента документа. Она возвращает true, если первый элемент содержит второй, иначе возвращает значение false.

jQuery.each()

В отличие от метода each(), который выполняет итерации только по объектам jQuery, вспомогательная функция jQuery.each() способна выполнять итерации по элементам массива или свойствам объекта. В первом аргументе она принимает массив или объект, по которому выполняются итерации. Во втором аргументе принимается функция, которая должна быть вызвана для каждого элемента массива или свойства объекта. Этой функции передаются два аргумента: индекс элемента массива или имя свойства объекта и значение элемента массива или свойства объекта. Значение ссылки this в этой функции совпадает со значением второго аргумента. Если функция вернет false, jQuery.each() сразу же вернет управление, не завершив итерации. Функция jQuery.each() всегда возвращает значение первого аргумента.

Перечисление свойств функцией jQuery.each() выполняется в том же порядке, что и в обычном цикле for/in, т.е. в итерациях участвуют все перечислимые свойства, включая унаследованные. Перечисление элементов массива функцией jQuery.each() выполняется в порядке следования их индексов, и она не пропускает неопределенные элементы в разреженных массивах.

jQuery.extend()

Эта функция принимает объекты в своих аргументах. Она копирует свойства из второго и всех последующих объектов в первый объект, затирая все одноименные свойства в первом объекте. Она пропускает все свойства, имеющие значение undefined или null. Если передать ей только один объект, свойства этого объекта будут скопированы в сам объект jQuery. Возвращаемым значением функции является объект, в который копировались свойства. Если в первом аргументе передать значение true, будет выполнено глубокое, или рекурсивное, копирование: второй аргумент будет дополнен свойствами третьего (и всех последующих) объектов.

Эту функцию удобно использовать для создания копий объектов и объединения объектов с параметрами с настройками по умолчанию:

var clone = jQuery.extend({}, original);
var options = jQuery.extend({}, default_options, user_options); jQuery.globalEval()

Эта функция выполняет строку с программным кодом на языке JavaScript в глобальном контексте, как если бы она была содержимым элемента <script>. (В действительности эта функция создает элемент <script> и временно вставляет его в документ.)

jQuery.grep()

Эта функция похожа на метод filter() объекта Array, определяемый стандартом ES5. В первом аргументе она принимает массив, а во втором - функцию-предикат и вызывает эту функцию для каждого элемента массива, передавая ей значение и индекс элемента. Функция jQuery.grep() возвращает новый массив, содержащий только те элементы аргумента-массива, для которых функция-предикат вернула значение true (или другое значение, которое оценивается как истинное). Если в третьем аргументе передать функции jQuery.grep() значение true, она будет инвертировать возвращаемое значение функции-предиката и вернет массив элементов, для которых функция-предикат вернула ложное значение.

jQuery.inArray()

Эта функция похожа на метод indexOf() объекта Array, определяемый стандартом ES5. В первом аргументе она принимает произвольное значение, а во втором - массив (или объект, подобный массиву) и возвращает индекс первого элемента в массиве, имеющего это значение, или -1, если указанное значение отсутствует в массиве.

jQuery.isArray()

Возвращает true, если аргумент является объектом Array.

jQuery.isEmptyObject()

Возвращает true, если аргумент не содержит перечислимых свойств.

jQuery.isFunction()

Возвращает true, если аргумент является объектом Function. Обратите внимание, что в IE версии 8 и ниже такие методы, определяемые броузером, как Window.alert() и Element.attachEvent(), не являются функциями в этом смысле.

jQuery.isPlainObject()

Возвращает true, если аргумент является «простым» объектом, а не экземпляром некоторого более специализированного типа или класса объектов.

jQuery.makeArray()

Если аргумент является объектом, подобным массиву, эта функция скопирует элементы из этого объекта в новый (истинный) массив и вернет этот массив. Если аргумент не является объектом, подобным массиву, эта функция просто вернет новый массив с аргументом в качестве единственного элемента.

jQuery.map()

Эта функция похожа на метод map() объекта Array, определяемый стандартом ES5. В первом аргументе она принимает массив или объект, подобный массиву, а во втором - функцию. Она передает указанной функции значение и индекс каждого элемента массива и возвращает новый массив, содержащий значения, возвращаемые функцией. jQuery.map() имеет пару отличий от метода map() в стандарте ES5. Если ваша функция отображения вернет null, это значение не будет включено в массив с результатами. И если ваша функция отображения вернет массив, в результат будут добавлены элементы этого массива по отдельности, а не сам массив.

jQuery.merge()

Эта функция принимает два массива или объекта, подобных массивам, добавляет элементы второго массива в первый и возвращает первый массив. Первый массив изменяется, а второй - нет. Обратите внимание, что эту функцию можно использовать для поверхностного копирования массивов, как показано ниже:

var clone = jQuery.merge([], original);
jQuery.parseJSON()

Эта функция разбирает строку в формате JSON и возвращает результат. Она возбуждает исключение, если в исходной строке будет обнаружена ошибка. Библиотека jQuery использует стандартную версию функции JSON.parse(), если она определена в броузере. Обратите внимание, что в библиотеке jQuery имеется только функция разбора строк в формате JSON, но в ней отсутствует функция сериализации объектов в формат JSON.

jQuery.proxy()

Эта функция напоминает метод bind() (раздел 8.7.4) объекта Function, определяемый стандартом ES5. В первом аргументе она принимает функцию, а во втором - объект и возвращает новую функцию, которая вызывает оригинальную как метод указанного объекта. Она не выполняет частичное применение аргументов, как метод bind().

Функция jQuery.ргоху() может также вызываться с объектом в первом аргументе и именем свойства во втором. Значение свойства с указанным именем должно быть функцией. В этом случае вызов функции jQuery.proxy(o.n) вернет то же, что и вызов jQuery.proxy(o[n],о).

Функция jQuery.ргоху() предназначена для использования с механизмом связывания обработчиков событий в библиотеке jQuery. Если в качестве обработчика была связана функция, полученная с помощью jQuery.proxy(), то удалить ее можно, указав ее оригинал.

jQuery.support

Это свойство подобно свойству jQuery.browser, но оно предназначено для переносимой проверки поддерживаемых возможностей (раздел 13.4.3) вместо менее надежного способа определения типа броузера. Значением свойства jQuery.support является объект, все свойства которого имеют логические значения и определяют наличие или отсутствие поддержки различных возможностей броузеров. Большинство свойств объекта jQuery.support содержат низкоуровневую информацию, используемую внутренними механизмами библиотеки jQuery. В основном они представляют интерес для разработчиков расширений и мало чем полезны прикладным программистам. Одно исключение - свойство jQuery.support.boxModel: оно имеет значение true, если броузер использует блочную модель «context-box», соответствующую стандарту CSS, и значение false в ІE6 и ІE7, работающих в режиме совместимости (раздел 16.2.3.1).

jQuery.trim()

Эта функция похожа на метод trim(), добавленный в строки стандартом ES5. Она принимает единственный строковый аргумент и возвращает его копию, из которой удалены начальные и завершающие пробельные символы.

Оглавление книги


Генерация: 0.904. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз