русский  עברית
tadam logo
Нашли ошибку в тексте?
Отметьте её курсором и нажмите
Ctrl + Enter
Проверка орфографии Xhtml.co.il
Orphus system
Рассылка
Присоединитесь к списку рассылки для получения последних новостей

Введите адрес электронной почты:

jQuery.extend( цель, [ объект1 ], [ объектN ] )

Возвращает: Объект
Описание: Соединяет содержимое двух или более объектов вместе в первый объект.

Аргументы

jQuery.extend( цель, [ объект1 ], [ объектN ] )

Добавлена в версию: 1.0
цель
Объект, который будет получать новые свойства, в случае если дополнительные объекты передаются или он будет расширять именное поле jQuery если он является единственным аргументом.
объект1
Объект, содержащий дополнительные свойства, для объединения вместе.
объектN
Дополнительные объекты содержащие свойства для объединения вместе.

jQuery.extend( [ глубина ], цель, объект1, [ объектN ])

Добавлена в версию: 1.1.4
Если true, слияние происходит рекурсивно (aka. глубокая копия).
цель
Объект для расширения. Он будет получать новые свойства.
объект1
Объект, содержащий дополнительные свойства, для объединения вместе.
объектN
Дополнительные объекты содержащие свойства для объединения вместе.

Когда мы поставляем два или более объектов в $.extend(), свойства со всех объектов добавляются к объекту цели.

Если поставляется только один аргумент в $.extend(), это означает, что аргумент цели был пропущен. В этом случае сам объект jQuery является целью. Делая это, мы можем добавить новые функции к пространству имен jQuery. Это может быть полезно для прагинов авторов желяющих добавить новые методы в jQuery.

Имейте в виду, что целевой объект (первый аргумент) будет изменен, а также будет возвращен из $.extend(). Однако, если мы хотим сохранить оригинальные объекты, мы можем сделать это с помощью отправки пустого объекта как цели:

var object = $.extend({}, object1, object2);

Слияние выполняемое $.extend() по умолчанию не рекурсивное; если свойство первого объекта сам объект или массив, он будет полностью переписан свойством с тем же ключом во втором объекте. Значения не сливаются в месте. Это можно видеть в примере ниже путем изучения значения банана. Тем в случае передачи true для аргумента первой функции, объекты будут соедененны рекурсивно.

Неопределенные свойства не копируются. Тем не менее, свойства унаследованные из прототипа объекта будут перезаписанны.

Примеры

Пример 1

Соединяет два объекта, модифицируя первый.
var object1 = {
  apple: 0,
  banana: {weight: 52, price: 100},
  cherry: 97
};
var object2 = {
  banana: {price: 200},
  durian: 100
};
$.extend(object1, object2);
Результат выполнения кода выше:
object1 === {apple: 0, banana: {price: 200}, cherry: 97, durian: 100}

Пример 2

Соединяет два объекта рекурсивно, модифицируя первый.
var object1 = {
  apple: 0,
  banana: {weight: 52, price: 100},
  cherry: 97
};
var object2 = {
  banana: {price: 200},
  durian: 100
};

$.extend(true, object1, object2);
Результат выполнения кода выше:
object1 === {apple: 0, banana: {weight: 52, price: 200}, cherry: 97, durian: 100}

Пример 3

Соединяет настройки и параметры, модифицирует настройки.
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
Результат выполнения кода выше:
settings == { validate: true, limit: 5, name: "bar" }

Пример 4

Соединяет параметры по умолчанию и настройки, не изменяя параметры по умолчанию. Это общая схема разработки плагина.
var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = $.extend(empty, defaults, options);
Результат выполнения кода выше:
settings == { validate: true, limit: 5, name: "bar" } empty == { validate: true, limit: 5, name: "bar" }
Была ли эта информация полезной?
   

Комментарии