Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Объединение объектов
Для объединения объектов можно воспользоваться оператором SPREAD
. При этом копируются только собственные перечислимые свойства:
let obj1 = { a: 15, c: 6 };
let obj2 = Object.create(Object.prototype, {
'a': {
value: 10,
writable: true,
configurable: true,
enumerable: true
},
'b': { value: 3, enumerable: false }
});
let obj3 = { ...obj1, ...obj2 }
console.log( obj3 ); // { a: 10, c: 6 }
// Копируются только собственные перечислимые свойства
console.log( Object.getOwnPropertyNames(obj3) ); // [ 'a', 'c' ]
Если свойства имеют одинаковое название, то значение из первого объекта будет заменено значением из второго объекта. Поэтому свойство a
из примера получило значение 10
. Эту особенность удобно использовать для объединения объекта с настройками по умолчанию и пользовательского объекта, внутри которого можно поменять некоторые значения по умолчанию:
let defaultObj = { focus: true, show: true };
let userObj = { show: false };
console.log( { ...defaultObj, ...userObj } );
// { focus: true, show: false }
Для объединения нескольких объектов с объектом из первого параметра можно воспользоваться статическим методом assign(<Объект 1>, ...<Объекты>)
из класса Object
. Метод возвращает ссылку на объект из первого параметра:
let obj1 = { a: 15, c: 6 };
let obj2 = Object.create(Object.prototype, {
'a': {
value: 10,
writable: true,
configurable: true,
enumerable: true
},
'b': { value: 3, enumerable: false }
});
let obj3 = Object.assign(obj1, obj2);
console.log( obj3 ); // { a: 10, c: 6 }
// Изменяется объект из первого параметра
console.log( obj1 ); // { a: 10, c: 6 }
console.log( obj3 == obj1 ); // true
// Копируются только собственные перечислимые свойства
console.log( Object.getOwnPropertyNames(obj3) ); // [ 'a', 'c' ]
Если не нужно изменять существующий объект, то в первом параметре следует указать пустой объект:
let obj4 = Object.assign({}, obj1, obj2);
console.log( obj4 ); // { a: 10, c: 6 }
console.log( obj4 == obj1 ); // false
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов