Полный обзор важных сведений о методе назначения
Назначение метода Object.assign (как следует из названия) состоит в том, чтобы присвоить набор свойств из пункта назначения объекту-источнику.
Здесь действительно важно понимать всю картину, поэтому я хочу
подвести итоги. действительно важные моменты.
1. Источник должен отличаться от нулевого или неопределенного
let person = null; // or undefined Object.assign(person, { name: 'John', surname: 'Doe' }); console.log(person); // Object.assign(person, { name: 'John', surname: 'Doe' }); // TypeError: Cannot convert undefined or null to object
2. Источник должен быть объектом
Если исходное значение не является объектом, метод не выдаст никакой ошибки.
Object.assign("", { name: 'John', surname: 'Doe' }); // no errors in this case
3. Переопределение значения свойства
let person = { name: 'John' }; Object.assign(person, { name: 'Leonardo', surname: 'Doe' }); // { name: 'Leonardo', surname: 'Doe' }
4. Несколько целевых объектов
let person = {}; Object.assign(person, { name: 'Leonardo', surname: 'Doe' }, { age: 44 }); console.log(person); // { name: 'Leonardo', surname: 'Doe', age: 44 }
5. Установите для свойств значение null/undefined
let person = { name: 'John', surname: 'Doe', age: 44 }; Object.assign(person, { name: 'Leonardo', surname: 'Doe', age: null }); console.log(person); // { name: 'Leonardo', surname: 'Doe', age: null }
6. Поверхностное копирование
Однако в отношении Object.assign()
следует помнить, что метод выполняет только частичное глубокое копирование объектов.
let person = { name: 'John', surname: 'Doe', age: 44, address: { city: 'LA' } }; let personCopy = Object.assign({}, person); personCopy.name = 'Leonardo'; personCopy.address.city = 'New York'; console.log('person: ', person); console.log('personCopy: ', personCopy); /* person { name: 'John', surname: 'Doe', age: 44, address: { city: 'New York' } } personCopy: { name: 'Leonardo', surname: 'Doe', age: 44, address: { city: 'New York' } } */
Спасибо за прочтение.
Если вам нравятся такие истории и вы хотите продолжать читать мои истории, рассмотрите возможность стать участником среды и моим подписчиком. Это стоит 5 долларов США в месяц и дает вам неограниченный доступ к контенту Medium.
Больше контента на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.