Есть ли разница в способах клонирования объектов с использованием спред оператора?
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 };
Комментариев нет:
Отправить комментарий