JavaScript में ऑब्जेक्ट को सही तरीके से कैसे क्लोन करें? Object.assign और spread ऑपरेटर के साथ समस्याएं
सभी को नमस्कार! मैं JavaScript में नया हूँ और ऑब्जेक्ट कॉपी करते समय एक समस्या का सामना किया।
मेरे पास नेस्टेड डेटा वाला एक ऑब्जेक्ट `user` है:
```javascript
const user = {
name: 'Иван',
age: 30,
address: {
city: 'Москва',
street: 'Тверская',
coordinates: { lat: 55.76, lng: 37.62 }
},
hobbies: ['программирование', 'шахматы']
};
```
मैं इस ऑब्जेक्ट की एक कॉपी बनाने की कोशिश कर रहा हूँ, लेकिन अप्रत्याशित व्यवहार का सामना किया। जब मैं `Object.assign` या spread ऑपरेटर का उपयोग करता हूँ, तो नेस्टेड ऑब्जेक्ट में बदलाव मूल ऑब्जेक्ट को प्रभावित करते हैं:
```javascript
const clone1 = Object.assign({}, user);
const clone2 = { ...user };
clone1.address.city = 'Санкт-Петербург';
console.log(user.address.city); // 'Санкт-Петербург' — मूल ऑब्जेक्ट भी बदल गया!
clone2.hobbies.push('чтение');
console.log(user.hobbies); // ['программирование', 'шахматы', 'чтение'] — फिर से बदल गया!
```
मैंने पढ़ा है कि इसे 'shallow copy' कहा जाता है। deep copy कैसे करें?