একটি কী ব্যতীত একটি বস্তু ক্লোন করার সবচেয়ে সহজ উপায় হল পুরো অবজেক্টকে ক্লোন করা এবং তারপর প্রয়োজনীয় নয় এমন সম্পত্তি সরিয়ে ফেলা। তবে ক্লোনিং 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' } }