जावास्क्रिप्ट को किसी परिचय की आवश्यकता नहीं है, यह अत्यधिक बहुमुखी प्रतिभा वाली एक मजबूत भाषा है, लेकिन यदि आपने इसके साथ काम किया है, तो आपने संभवतः कुछ असामान्य व्यवहार देखा होगा। उनमें से एक यह है कि जावास्क्रिप्ट परिवर्तनीय प्रतियों को कैसे संभालता है, खासकर वस्तुओं के साथ काम करते समय। इस लेख में, हम डीप कॉपी की अवधारणा का पता लगाएंगे और यह हमारे प्रोग्राम में डेटा डुप्लिकेट करते समय अप्रत्याशित समस्याओं से बचने में कैसे मदद करता है।
जब हम किसी वेरिएबल की प्रतिलिपि बनाते हैं, तो जावास्क्रिप्ट एक नया मेमोरी स्पेस बनाता है और कॉपी किए गए मान को वहां संग्रहीत करता है; फिर नया वेरिएबल इस नए मेमोरी स्पेस की ओर इशारा करता है। उदाहरण के लिए:
x = 5; y = x;
y एक नए मेमोरी स्पेस की ओर इशारा कर रहा है, जिसका मान x के समान है, अर्थात 5 कुछ इस तरह होगा:
उपरोक्त अवधारणा केवल आदिम मूल्यों पर लागू होती है, वस्तुओं के लिए यह अलग है। कल्पना करें कि हमारे पास निम्नलिखित दो वस्तुएं हैं:
let a = { name: 'Rick', lastName: 'Sanchez', }; let b = a;
उपरोक्त उदाहरण में, b के पास अपना स्वयं का मेमोरी स्पेस नहीं है जैसा कि हम उम्मीद कर सकते हैं; इसके बजाय, a उस मेमोरी स्पेस की ओर इशारा कर रहा है जहां a संग्रहीत है।
इस व्यवहार के कारण क्या समस्याएँ हो सकती हैं? मूल रूप से, यदि आप a या b से कोई फ़ील्ड बदलते हैं, तो दोनों चर बदल जाएंगे। निम्नलिखित कोड चलाएँ और इसे स्वयं सत्यापित करें।
let a = { name: 'Rick', lastName: 'Sanchez', }; let b = a; b.name = 'Morty'; console.log('a: ', a); // a: { name: 'Morty', lastName: 'Sanchez' } console.log('b: ', b); // b: { name: 'Morty', lastName: 'Sanchez' }
इसका समाधान? हमें a के मान को एक नए स्वतंत्र मेमोरी स्पेस में सहेजने के लिए एक गहरी प्रतिलिपि बनाने की आवश्यकता है जो b इंगित करता है।
const b = JSON.parse(JSON.stringify(a));
इस तरह, हम जावास्क्रिप्ट को ऑब्जेक्ट से JSON में प्रारूप बदलकर एक नया मेमोरी स्पेस बनाने के लिए मजबूर कर रहे हैं। यह stringify विधि का उपयोग करके किया जाता है, फिर JSON को अपनी मेमोरी स्पेस के साथ parse विधि के साथ वापस ऑब्जेक्ट में परिवर्तित कर दिया जाता है, ताकि दोनों चर पूरी तरह से स्वतंत्र रहें।
क्या आपके साथ कभी ऐसा अजीब व्यवहार हुआ है? मुझे टिप्पणियों में बताएं, मुझे आपको पढ़कर खुशी होगी!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3