كيفية استنساخ كائن بشكل صحيح في JavaScript؟ مشاكل مع Object.assign وعامل الانتشار
مرحبًا بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة عند نسخ الكائنات.
لدي كائن `user` مع بيانات متداخلة:
```javascript
const user = {
name: 'Иван',
age: 30,
address: {
city: 'Москва',
street: 'Тверская',
coordinates: { lat: 55.76, lng: 37.62 }
},
hobbies: ['программирование', 'шахматы']
};
```
أحاول إنشاء نسخة من هذا الكائن، لكني واجهت سلوكًا غير متوقع. عندما أستخدم `Object.assign` أو عامل الانتشار، تؤثر التغييرات في الكائنات المتداخلة على الكائن الأصلي:
```javascript
const clone1 = Object.assign({}, user);
const clone2 = { ...user };
clone1.address.city = 'Санкт-Петербург';
console.log(user.address.city); // 'Санкт-Петербург' — الكائن الأصلي تغير أيضًا!
clone2.hobbies.push('чтение');
console.log(user.hobbies); // ['программирование', 'шахматы', 'чтение'] — تغير مرة أخرى!
```
قرأت أن هذا يسمى "النسخ السطحي". كيف يمكن عمل نسخ عميق؟