Avatar ·

Comment cloner correctement un objet en JavaScript ? Problèmes avec Object.assign et l'opérateur spread

Bonjour à tous ! Je suis débutant en JavaScript et j'ai rencontré un problème lors de la copie d'objets. J'ai un objet `user` avec des données imbriquées : ```javascript const user = { name: 'Иван', age: 30, address: { city: 'Москва', street: 'Тверская', coordinates: { lat: 55.76, lng: 37.62 } }, hobbies: ['программирование', 'шахматы'] }; ``` J'essaie de créer une copie de cet objet, mais j'ai rencontré un comportement inattendu. Lorsque j'utilise `Object.assign` ou l'opérateur spread, les modifications dans les objets imbriqués affectent l'objet d'origine : ```javascript const clone1 = Object.assign({}, user); const clone2 = { ...user }; clone1.address.city = 'Санкт-Петербург'; console.log(user.address.city); // 'Санкт-Петербург' — l'objet d'origine a aussi changé ! clone2.hobbies.push('чтение'); console.log(user.hobbies); // ['программирование', 'шахматы', 'чтение'] — encore modifié ! ``` J'ai lu que cela s'appelle "copie superficielle". Comment faire une copie profonde ?