Avatar ·

Como clonar corretamente um objeto em JavaScript? Problemas com Object.assign e operador spread

Olá a todos! Sou iniciante em JavaScript e me deparei com um problema ao copiar objetos.\n\nTenho um objeto `user` com dados aninhados:\n\n```javascript\nconst user = {\n name: 'Ivan',\n age: 30,\n address: {\n city: 'Moscou',\n street: 'Tverskaya',\n coordinates: { lat: 55.76, lng: 37.62 }\n },\n hobbies: ['programação', 'xadrez']\n};\n```\n\nEstou tentando criar uma cópia deste objeto, mas me deparei com um comportamento inesperado. Quando uso `Object.assign` ou o operador spread, as alterações nos objetos aninhados afetam o objeto original:\n\n```javascript\nconst clone1 = Object.assign({}, user);\nconst clone2 = { ...user };\n\nclone1.address.city = 'São Petersburgo';\nconsole.log(user.address.city); // 'São Petersburgo' — o objeto original também mudou!\n\nclone2.hobbies.pus