Страницы

Поиск по вопросам

вторник, 12 марта 2019 г.

ES6. Клонирование объектов через спред оператор

Есть ли разница в способах клонирования объектов с использованием спред оператора?
const a = { s:1, d:2 }; // этим способом const {...b} = a; // и этим способом const c = {...a};


Ответ

Судя по тестам при необходимости клонирования объекта "как есть" никакой разницы нет.
Однако если нужно убрать, добавить или изменить что-то в результирующем объекте тогда разница есть.
Если нужно клонировать целевой объект частично тогда наш выбор первый вариант:
const first = { a:1, b:2, c:3, d:4 }; const { a, ...second } = first; console.log(second); // => { b:2, c:3, d:4 }; Если нужно клонировать целевой объект и добавить или изменить какие-то поля тогда наш выбор второй вариант:
Добавить:
const first = { a:1, b:2, c:3, d:4 }; const second = { ...first, e: 5}; console.log(second); // => { a:1, b:2, c:3, d:4, e:5 };
Изменить:
const first = { a:1, b:2, c:3, d:4 }; const second = { ...first, d: 5}; console.log(second); // => { a:1, b:2, c:3, d:5 };

Комментариев нет:

Отправить комментарий