Executando verificação de segurança...
Respondendo a [Não disponível] dentro da publicação Lidando com objectos em JS - Parte 1
2

O spread também cria uma shallow copy:

In JavaScript, all standard built-in object-copy operations (spread syntax, Array.prototype.concat(), Array.prototype.slice(), Array.from(), Object.assign(), and Object.create()) create shallow copies rather than deep copies.

https://developer.mozilla.org/en-US/docs/Glossary/Shallow_copy

Para realmente fazer uma deep copy é possível utilizar a função structuredClone, nativa do JS, ou uma biblioteca externa como o lodash.

https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
https://lodash.com/docs/4.17.15#cloneDeep

Carregando publicação patrocinada...
1

Também é possível fazer uma deep copy usando JSON.stringfye depois JSON.parse, não sei se é a forma mais correta, mais sempre que preciso faço dessa forma.

1

O problema é que JSON.stringify dá erro se o objeto tiver referências circulares. Embora seja possível contornar, usar structuredClone me parece mais direto do que gerar uma string e depois fazer parse nela. Aliás, tem vários benchmarks mostrando que usar JSON pra isso é mais ineficiente (embora para poucos objetos pequenos não deva fazer diferença).

Outra vantagem de structuredClone é que funciona com vários tipos que JSON não suporta, como Date e RegExp, entre outros (embora também seja possível contornar, exemplo).