যেকোনো ভাষায় বস্তুর অনুলিপি করার 2টি উপায় আছে, গভীর অনুলিপি এবং অগভীর অনুলিপি।
অগভীর অনুলিপি এবং গভীর অনুলিপি ভাষাগুলি অজ্ঞেয়বাদী। অগভীর কপি যতটা সম্ভব কম নকল করুন। একটি সংগ্রহের একটি অগভীর অনুলিপি সংগ্রহ কাঠামোর একটি অনুলিপি, উপাদান নয়। একটি অগভীর অনুলিপি সহ, দুটি সংগ্রহ এখন পৃথক উপাদানগুলি ভাগ করে।
উদাহরণ
innerObj ={ a:'b', c:'d'} let obj ={ x:"test", y:innerObj}// একটি অগভীর কপি তৈরি করুন। লেট 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' } }প্রে>মনে রাখবেন যে অগভীর অনুলিপিগুলি পুনরাবৃত্তিমূলকভাবে ক্লোন তৈরি করে না। এটি শুধুমাত্র শীর্ষ স্তরে এটি করে৷
৷গভীর অনুলিপি সবকিছু নকল. একটি সংগ্রহের একটি গভীর অনুলিপি হল দুটি সংগ্রহ যা মূল সংগ্রহের সমস্ত উপাদান ক্লোন করা হয়৷
উদাহরণ
innerObj ={ a:'b', c:'d'} let obj ={ x:"test", y:innerObj}// একটি গভীর অনুলিপি তৈরি করুন। লেট 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' } }প্রে>