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

जावास्क्रिप्ट में शैलो कॉपी बनाम डीप कॉपी

2024-08-19 को प्रकाशित
ब्राउज़ करें:718

Shallow Copy vs Deep Copy in JavaScript

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

उथली प्रतिलिपि
एक उथली प्रतिलिपि एक नई वस्तु या सरणी बनाती है जिसमें मूल के समान मान होते हैं। हालाँकि, यदि मूल में नेस्टेड ऑब्जेक्ट या सरणियाँ हैं, तो उथली प्रतिलिपि केवल इन नेस्टेड संरचनाओं के संदर्भों की प्रतिलिपि बनाती है, न कि स्वयं संरचनाओं की। इसका मतलब है कि कॉपी की गई संरचना में नेस्टेड ऑब्जेक्ट या सरणियों में परिवर्तन भी मूल को प्रभावित करेगा।

उथली प्रतिलिपि विधियों के उदाहरण:

  1. स्प्रेड ऑपरेटर ({...})
const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };

यहाँ, शैलोकॉपी एक नई वस्तु है, लेकिन शैलोकॉपी.बी अभी भी मूल.बी. के समान ऑब्जेक्ट को संदर्भित करता है।

2.ऑब्जेक्ट.असाइन()

const shallowCopy = Object.assign({}, original);
  1. ऐरे स्लाइस विधि
const originalArray = [1, 2, 3];
const shallowCopyArray = originalArray.slice();

डीप कॉपी
एक गहरी प्रतिलिपि एक नई वस्तु या सरणी बनाती है जो मूल का एक पूर्ण, स्वतंत्र क्लोन है, जिसमें सभी नेस्टेड ऑब्जेक्ट और सरणी शामिल हैं। डीप कॉपी में परिवर्तन मूल को प्रभावित नहीं करते हैं और इसके विपरीत भी।

डीप कॉपी विधियों के उदाहरण:

  1. JSON.stringify() और JSON.parse()
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));

यह विधि ऑब्जेक्ट को JSON स्ट्रिंग में क्रमबद्ध करती है और फिर इसे एक नई ऑब्जेक्ट पर वापस पार्स करती है। हालाँकि, यह फ़ंक्शंस, अपरिभाषित, या परिपत्र संदर्भों को संभाल नहीं पाता है।

2.पुनरावर्ती कार्य

function deepCopy(obj) {
  if (obj === null || typeof obj !== 'object') return obj;

  const copy = Array.isArray(obj) ? [] : {};
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      copy[key] = deepCopy(obj[key]);
    }
  }
  return copy;
}

  1. StructuredClone() (आधुनिक जावास्क्रिप्ट वातावरण में)
const deepCopy = structuredClone(original);

प्रत्येक का उपयोग कब करें

  • उथली प्रतिलिपि: नेस्टेड संरचनाओं के बिना सरल वस्तुओं या सरणियों के लिए उपयुक्त। यह तेज़ है और कम मेमोरी का उपयोग करता है। जब आपको एक त्वरित प्रतिलिपि की आवश्यकता हो तो इसका उपयोग करें जहां नेस्टेड ऑब्जेक्ट में परिवर्तन मूल और प्रतिलिपि दोनों में प्रतिबिंबित होना चाहिए।

  • डीप कॉपी: नेस्टेड संरचनाओं के साथ जटिल वस्तुओं या सरणियों के लिए आवश्यक। यह सुनिश्चित करता है कि प्रतिलिपि में परिवर्तन मूल को प्रभावित न करें। जब आपको पूरी तरह से स्वतंत्र क्लोन की आवश्यकता हो तो इसका उपयोग करें।

इन अंतरों को समझने से अनपेक्षित साझा संदर्भों से उत्पन्न होने वाली बग को रोकने में मदद मिलती है और आपके अनुप्रयोगों में डेटा अखंडता सुनिश्चित होती है

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/सागरj521/shallow-copy-vs- Deep-copy-in-javascript-4dmo?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3