Avatar ·

كيفية استنساخ كائن بشكل صحيح في 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); // ['программирование', 'шахматы', 'чтение'] — تغير مرة أخرى! ``` قرأت أن هذا يسمى "النسخ السطحي". كيف يمكن عمل نسخ عميق؟