एक कुंजी को छोड़कर किसी वस्तु को क्लोन करने का सबसे आसान तरीका यह होगा कि पूरी वस्तु को क्लोन किया जाए और फिर उस संपत्ति को हटा दिया जाए जिसकी आवश्यकता नहीं है। हालांकि, क्लोनिंग 2 प्रकार की हो सकती है -
- डीप क्लोन
- उथला क्लोन
उथली प्रतियां यथासंभव कम डुप्लिकेट करें। संग्रह की एक उथली प्रति संग्रह संरचना की एक प्रति है, न कि तत्व। उथली प्रतिलिपि के साथ, दो संग्रह अब अलग-अलग तत्वों को साझा करते हैं।
उदाहरण
let innerObj = { a: 'b', c: 'd' } let obj = { x: "test", y: innerObj } // Create a shallow copy. let copyObj = Object.assign({}, obj); // Both copyObj and obj's prop y now refers to the same innerObj. Any changes to this will be reflected. innerObj.a = "test" console.log(obj) console.log(copyObj) This will give the output: { 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 } // Create a deep copy. let copyObj = JSON.parse(JSON.stringify(obj)) // Both copyObj and obj's prop y now refers to the same innerObj. Any changes to this will be reflected. innerObj.a = "test" console.log(obj) console.log(copyObj) This will give the output: { x: 'test', y: { a: 'test', c: 'd' } } { x: 'test', y: { a: 'b', c: 'd' } }
एक बार जब आप इन विधियों में से किसी एक का उपयोग करके एक प्रति प्राप्त कर लेते हैं, तो आप उस संपत्ति को हटा सकते हैं जिसकी आपको आवश्यकता नहीं है डिलीट कीवर्ड का उपयोग करके। उदाहरण के लिए,
उदाहरण
let original = { x: 'test', y: { a: 'test', c: 'd' } } let copy = JSON.parse(JSON.stringify(original)) delete copy['x'] console.log(copy) console.log(original) This will give the output: { y: { a: 'test', c: 'd' } } { x: 'test', y: { a: 'test', c: 'd' } }