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