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