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?