Também é possível fazer uma deep copy usando JSON.stringfy
e depois JSON.parse
, não sei se é a forma mais correta, mais sempre que preciso faço dessa forma.
Respondendo a "O spread também cria uma shallow copy: In JavaS..." dentro da publicação Lidando com objectos em JS - Parte 1
1
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).