¿Cómo clonar correctamente un objeto en JavaScript? Problemas con Object.assign y el operador spread
¡Hola a todos! Soy nuevo en JavaScript y me encontré con un problema al copiar objetos.
Tengo un objeto `user` con datos anidados:
```javascript
const user = {
name: 'Iván',
age: 30,
address: {
city: 'Moscú',
street: 'Tverskaya',
coordinates: { lat: 55.76, lng: 37.62 }
},
hobbies: ['programación', 'ajedrez']
};
```
Estoy intentando crear una copia de este objeto, pero me encontré con un comportamiento inesperado. Cuando uso `Object.assign` o el operador spread, los cambios en los objetos anidados afectan al objeto original:
```javascript
const clone1 = Object.assign({}, user);
const clone2 = { ...user };
clone1.address.city = 'San Petersburgo';
console.log(user.address.city); // 'San Petersburgo' — ¡el objeto original también cambió!
clone2.hobbies.push('lectura');
console.log(user.hobbies); // ['programación', 'ajedrez', 'lectura'] — ¡cambió de nuevo!
```
He leído que esto se llama "copia superficial". ¿Cómo hacer una copia profunda?
No answers yet.
Inicia sesión para dejar una respuesta
Blogs