जावास्क्रिप्ट में ऑब्जेक्ट को सही तरीके से क्लोन कैसे करें: शैलो और डीप कॉपी
सभी को नमस्ते! मैंने अभी-अभी जावास्क्रिप्ट सीखना शुरू किया है और एक समस्या का सामना किया जिसने मुझे असमंजस में डाल दिया। जब मैं एक ऑब्जेक्ट को दूसरे में असाइन करता हूं, तो वे किसी तरह जुड़ जाते हैं। कॉपी को बदलने पर मूल भी बदल जाता है। यहाँ एक उदाहरण है:
```javascript
let user = { name: "Иван", age: 30 };
let clone = user;
clone.name = "Петр";
console.log(user.name); // "Петр" आउटपुट करता है, जबकि मुझे "Иван" की उम्मीद थी
```
मैं समझता हूं कि जावास्क्रिप्ट में ऑब्जेक्ट reference से पास होते हैं, लेकिन मैं एक वास्तविक स्वतंत्र कॉपी कैसे बनाऊं? मैंने `Object.assign()` आज़माया, लेकिन ऐसा लगता है कि यह हमेशा सही ढंग से काम नहीं करता, खासकर अगर ऑब्जेक्ट के अंदर अन्य ऑब्जेक्ट हों:
```javascript
let user = {
name: "Анна",
address: { city: "Москва", street: "Тверская" }
};
let clone = Object.assign({}, user);
clone.address.city = "СПб";
console.log(user.address.city); // "СПб" आउटपुट करता है — फिर से मूल बदल गया!
```
क्या पूर्ण, डीप कॉपी करने का कोई तरीका है? क्या कोई built-in methods हैं या मुझे अपना function लिखना होगा?