যেকোনো ল্যাঙ্গুয়েজে অবজেক্ট কপি করার ২টি উপায় রয়েছে: ডিপ কপি এবং শ্যালো কপি।
শ্যালো কপি এবং ডিপ কপি ভাষা-নিরপেক্ষ। শ্যালো কপি যতটা কম কপি করে। একটি সংগ্রহের শ্যালো কপি হলো সংগ্রহের কাঠামোর কপি, উপাদানগুলো না। শ্যালো কপির সাথে, দুটি সংগ্রহ এখন পৃথক উপাদানগুলো শেয়ার করে।
উদাহরণ
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' } }