Object.assign - garevna/js-course GitHub Wiki
Метод копирует значения всех собственных перечислимых свойств
из одного или более исходных объектов sources в целевой объект target
Возвращает целевой объект target
Object.assign ( target, ...sources )Object.assign осуществляет неглубокое копирование
Если свойства исходного объекта являются массивами или объектами, то в целевой объект будут помещены ссылки на соответствующие свойства исходного объекта
☕ 1️⃣
var newObject = Object.assign (
{ },
{ name: "Егор", age: 25 },
{ write: true, read: true }
)В результате вывода в консоль объекта newObject получим
{
name: "Егор",
age: 25,
write: true,
read: true
}☕ 2️⃣ Создадим объект source, свойство position которого будет массивом, а свойство attrs - объектом:
var source = {
name: "sample",
attrs: {
type: "figure",
color: "green",
size: 200
},
position: [ 250, 250 ]
}Создадим копию target объекта source с помощью метода Object.assign:
var target = Object.assign ( {}, source )Покажем, что:
☝ свойство target.attrs содержит ссылку на объект source.attrs,
☝ а свойство target.position содержит ссылку на массив source.position
Для этого изменим значение элемента массива target.position:
target.position [0] = 100и значение свойства target.attrs.color:
target.attrs.color = "#fa0"поскольку target.position - это всего лишь ссылка на массив source.position,
а target.attrs - ссылка на объект source.attrs,
соответствующее значение массива source.position
и значение свойства attrs.color объекта source изменились:
• Object.create()
• Object.defineProperty()
• Object.defineProperties()
• Object.entries()
• Object.freeze()
• Object.getOwnPropertyDescriptor()
• Object.getOwnPropertyDescriptors()
• Object.getOwnPropertyNames()
• Object.getOwnPropertySymbols()
• Object.getPrototypeOf()
• Object.is()
• Object.isExtensible()
• Object.isFrozen()
• Object.isSealed()
• Object.keys()
• Object.preventExtensions()
• Object.seal()
• Object.setPrototypeOf()
• Object.values()