Object.assign - garevna/js-course GitHub Wiki

🎓 Статические методы конструктора Object


🎓 Object.assign()

Метод копирует значения всех собственных перечислимых свойств

из одного или более исходных объектов 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()


🔗 MDN

⚠️ **GitHub.com Fallback** ⚠️