Функция $.extend(): слияние объектов

Функция $.extend() позволяет произвести слияние нескольких объектов. Формат функции:

<Объект> = $.extend([true, ]<Начальный объект>, <Объект1>[, 
                    ..., <ОбъектN>])

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

var obj1 = { message: 'Сообщение по умолчанию' };
var obj2 = { message: 'Новое сообщение', n: 5 };
var obj3 = $.extend(obj1, obj2);
console.log(obj3);
// Object { message: "Новое сообщение", n: 5 }
console.log(obj1);
// Object { message: "Новое сообщение", n: 5 }

Обратите внимание: функция изменяет объект из параметра <Начальный объект>. Если нужно это предотвратить, то в этом параметре следует передать пустой объект:

var obj1 = { message: 'Сообщение по умолчанию' };
var obj2 = { message: 'Новое сообщение', n: 5 };
var obj3 = $.extend( {}, obj1, obj2 );
console.log(obj3);
// Object { message: "Новое сообщение", n: 5 }
console.log(obj1);
// Object { message: "Сообщение по умолчанию" }
Примечание

Если значением свойства является объект, то он просто заменяется новым объектом. Однако если в первом параметре указано значение true, то будет выполнено слияние вложенных объектов:

var obj1 = { obj: { message: 'Сообщение по умолчанию', x: 3 } };
var obj2 = { obj: { message: 'Новое сообщение', n: 5 } };
var obj3 = $.extend({}, obj1, obj2);
console.log( JSON.stringify(obj3) );
// {"obj":{"message":"Новое сообщение","n":5}}
var obj4 = $.extend(true, {}, obj1, obj2);
console.log( JSON.stringify(obj4) );
// {"obj":{"message":"Новое сообщение","x":3,"n":5}}

Учебник по jQuery и AJAX
Учебник по jQuery и AJAX в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов