उथली प्रतिलिपि और गहरी प्रतिलिपि भाषा अज्ञेयवादी हैं। उथली प्रतियां यथासंभव कम डुप्लिकेट करें। संग्रह की उथली प्रति संग्रह संरचना की एक प्रति है, न कि तत्व। उथली प्रतिलिपि के साथ, दो संग्रह अब अलग-अलग तत्वों को साझा करते हैं।
उदाहरण
let innerObj ={a:'b', c:'d'}let obj ={x:"test", y:innerObj}// एक उथली कॉपी बनाएं। copyObj =Object.assign({}, obj);// copyObj और obj के प्रोप y दोनों अब एक ही innerObj को संदर्भित करते हैं। इसमें कोई भी परिवर्तन दिखाई देगा.innerObj.a ="test"console.log(obj)console.log(copyObj)
आउटपुट
{ x:'test', y:{a:'test', c:'d' } } { x:'test', y:{a:'test', c:'d'} } पूर्व>ध्यान दें कि उथली प्रतियां पुनरावर्ती रूप से क्लोन नहीं बनाती हैं। यह सिर्फ शीर्ष स्तर पर करता है।
डीप कॉपी सब कुछ डुप्लिकेट करती है। संग्रह की एक गहरी प्रति दो संग्रह हैं जिनमें मूल संग्रह के सभी तत्वों को क्लोन किया गया है।
उदाहरण
let innerObj ={a:'b', c:'d'}let obj ={x:"test", y:innerObj}// एक डीप कॉपी बनाएं। copyObj =JSON.parse(JSON.stringify करें) (obj))// copyObj और obj के प्रोप y दोनों अब एक ही innerObj को संदर्भित करते हैं। इसमें कोई भी परिवर्तन दिखाई देगा.innerObj.a ="test"console.log(obj)console.log(copyObj)आउटपुट
{ x:'test', y:{a:'test', c:'d' } } { x:'test', y:{a:'b', c:'d'} } पूर्व>