Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Advanced
  5. Q28. What is the difference between shallow copy and deep copy of objects?
JavaScriptAdvanced

Q28. What is the difference between shallow copy and deep copy of objects?

Shallow copy কেন যথেষ্ট নয়, deep copy-এর সঠিক উপায় এবং কোনটা কখন দরকার।

Shallow copy মানে শুধু বাইরের স্তরের প্রপার্টি কপি হয় — ভেতরের nested object বা array-এর রেফারেন্স একই থাকে। আর deep copy মানে সব স্তর ধরে স্বতন্ত্র কপি তৈরি হয়।

shallow copy-র সমস্যাjavascript
javascript
const original = {
  name: "Rahim",
  address: { city: "Dhaka" },
};

// shallow copy
const shallow = { ...original };
shallow.address.city = "Sylhet";

console.log(original.address.city); // "Sylhet" — মূলও বদলে গেছে!

ধাপে ধাপে — ... দিয়ে বাইরের name আর address দুটোই একটা নতুন object-এ বসেছে। কিন্তু address একটি object, তাই সেটার রেফারেন্স কপি হয় — দুই object-ই এখন একই address-এর দিকে তাকাচ্ছে। তাই এক জায়গায় বদলালে অন্যটাও বদলে যায়।

Deep copy-তে nested object-ও আলাদা হয়, তাই কোনো একটি বদলালেও অন্যটি অক্ষত থাকে।

deep copyjavascript
javascript
const original = {
  name: "Rahim",
  address: { city: "Dhaka" },
};

// deep copy — আধুনিক ও সবচেয়ে নির্ভরযোগ্য উপায়
const deep = structuredClone(original);
deep.address.city = "Sylhet";

console.log(original.address.city); // "Dhaka" — অক্ষত
console.log(deep.address.city);     // "Sylhet"

JSON.parse(JSON.stringify(obj)) দিয়েও deep copy হয়, কিন্তু সেখানে Date সরে যায়, undefined ও function হারিয়ে যায়, আর Map বা Set ভুলভাবে বদলে যায়। তাই structuredClone ভালো।

array-তেও একই কথাjavascript
javascript
// nested array-ও
const list = [{ name: "Rahim" }, { name: "Karim" }];

// shallow — ভুল
const bad = [...list];
bad[0].name = "Jamal";
console.log(list[0].name); // "Jamal" — মূল বদলে গেছে

// deep — ঠিক
const good = structuredClone(list);
good[0].name = "Jamal";
console.log(list[0].name); // "Rahim"
কখন shallow যথেষ্টjavascript
javascript
// array-এর জন্য shallow copy
const shallowArr = list.slice();
const spreadArr = [...list];

// যখন শুধু এক স্তরের element-ই বদলাতে হবে, তখন shallow যথেষ্ট
const shallow = [...list];
shallow.push({ name: "Jamal" }); // push মূলকে ছোঁয় না
পদ্ধতিগভীরতাDate / Map / Set
{ ...obj }shallowঠিক থাকে
Object.assign({}, obj)shallowঠিক থাকে
structuredClone(obj)deepঠিক থাকে
JSON.parse(JSON.stringify(obj))deepনষ্ট হয়
ফাংশন দিয়ে হাতে কপিdeepনিজের মতো ঠিক করতে হয়
মনে রাখুন

State update করতে গিয়ে ...obj ব্যবহার করলে মূল object বদলানোর ঝুঁকি থাকে। তাই নিশ্চিত হতে পারলে structuredClone ব্যবহার করুন, বা library-র immutable update helper নিন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Advanced বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com