Avatar ·

¿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?