"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में डीप कॉपी को समझना

जावास्क्रिप्ट में डीप कॉपी को समझना

2024-11-01 को प्रकाशित
ब्राउज़ करें:266

जावास्क्रिप्ट को किसी परिचय की आवश्यकता नहीं है, यह अत्यधिक बहुमुखी प्रतिभा वाली एक मजबूत भाषा है, लेकिन यदि आपने इसके साथ काम किया है, तो आपने संभवतः कुछ असामान्य व्यवहार देखा होगा। उनमें से एक यह है कि जावास्क्रिप्ट परिवर्तनीय प्रतियों को कैसे संभालता है, खासकर वस्तुओं के साथ काम करते समय। इस लेख में, हम डीप कॉपी की अवधारणा का पता लगाएंगे और यह हमारे प्रोग्राम में डेटा डुप्लिकेट करते समय अप्रत्याशित समस्याओं से बचने में कैसे मदद करता है।

जब हम किसी वेरिएबल की प्रतिलिपि बनाते हैं, तो जावास्क्रिप्ट एक नया मेमोरी स्पेस बनाता है और कॉपी किए गए मान को वहां संग्रहीत करता है; फिर नया वेरिएबल इस नए मेमोरी स्पेस की ओर इशारा करता है। उदाहरण के लिए:


x = 5;
y = x;


y एक नए मेमोरी स्पेस की ओर इशारा कर रहा है, जिसका मान x के समान है, अर्थात 5 कुछ इस तरह होगा:

Comprendiendo la copia profunda en JavaScript

उपरोक्त अवधारणा केवल आदिम मूल्यों पर लागू होती है, वस्तुओं के लिए यह अलग है। कल्पना करें कि हमारे पास निम्नलिखित दो वस्तुएं हैं:


let a = {
    name: 'Rick',
    lastName: 'Sanchez',
};

let b = a;


उपरोक्त उदाहरण में, b के पास अपना स्वयं का मेमोरी स्पेस नहीं है जैसा कि हम उम्मीद कर सकते हैं; इसके बजाय, a उस मेमोरी स्पेस की ओर इशारा कर रहा है जहां a संग्रहीत है।

Comprendiendo la copia profunda en JavaScript

इस व्यवहार के कारण क्या समस्याएँ हो सकती हैं? मूल रूप से, यदि आप 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 विधि के साथ वापस ऑब्जेक्ट में परिवर्तित कर दिया जाता है, ताकि दोनों चर पूरी तरह से स्वतंत्र रहें।

क्या आपके साथ कभी ऐसा अजीब व्यवहार हुआ है? मुझे टिप्पणियों में बताएं, मुझे आपको पढ़कर खुशी होगी!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/daniel1775/comprendiendo-la-copia-profunda-en-javascript-2oon?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3