Avatar ·

Cómo clonar correctamente un objeto en JavaScript: copia superficial y profunda

¡Hola a todos! Acabo de empezar a estudiar JavaScript y me encontré con un problema que me dejó perplejo. Cuando asigno un objeto a otro, de alguna manera están vinculados. Al modificar la copia, también modifico el original. Aquí hay un ejemplo: ```javascript let user = { name: "Iván", age: 30 }; let clone = user; clone.name = "Pedro"; console.log(user.name); // Muestra "Pedro", pero esperaba "Iván" ``` Entiendo que en JavaScript los objetos se pasan por referencia, pero ¿cómo puedo hacer una copia realmente independiente? Probé `Object.assign()`, pero parece que tampoco funciona siempre correctamente, especialmente si dentro del objeto hay otros objetos: ```javascript let user = { name: "Ana", address: { city: "Moscú", street: "Tverskaya" } }; let clone = Object.assign({}, user); clone.address.city = "SPb"; console.log(user.address.city); // Muestra "SPb" — ¡otra vez se modificó el original! ``` ¿Hay alguna forma de hacer una copia completa y profunda? ¿Existen métodos integrados o necesito escribir mi propia función?