الطريقة الأكثر فعالية للنسخ العميق لكائن في JavaScript
مرحباً بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة عند نسخ الكائنات. أحتاج إلى إنشاء نسخة مستقلة من الكائن بحيث لا تؤثر التغييرات في النسخة على الأصل.
إليك مثال على الكود الذي لا يعمل معي:
```javascript
const original = {
name: 'Анна',
age: 25,
address: {
city: 'Москва',
street: 'Ленина'
},
hobbies: ['чтение', 'спорт']
};
const copy = original;
copy.name = 'Мария';
copy.address.city = 'СПб';
console.log(original.name); // 'Мария' — تغير!
console.log(original.address.city); // 'СПб' — تغير أيضاً!
```
حاولت استخدام `Object.assign()` وعامل الانتشار (spread operator):
```javascript
const copy2 = Object.assign({}, original);
const copy3 = {...original};
copy2.address.city = 'Казань';
console.log(original.address.city); // 'Казань' — تغير مرة أخرى!
```
المشكلة هي أن الكائنات والمصفوفات المتداخلة تُنسخ بالمرجع. سمعت عن `JSON.parse(JSON.stringify())`، لكن يقولون إنه...