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 ?