Great! Let’s now understand the difference between Shallow Copy and Deep Copy — an important concept in JavaScript when dealing with objects and arrays.

I’ll explain in English and Bangla, with examples.


🔁 Shallow Copy vs Deep Copy

Copy Type Meaning (English) ব্যাখ্যা (বাংলা)
Shallow Copy Copies only the first level of the object/array. Nested objects are still referenced. শুধুমাত্র উপরের স্তরের ডেটা কপি করে। ভিতরের (nested) অবজেক্ট বা অ্যারে একই রেফারেন্স থাকে।
Deep Copy Copies all levels, including nested objects. No references to the original. সব স্তরের (nested সহ) ডেটা সম্পূর্ণ নতুন কপি হয়। মূল অবজেক্টের সঙ্গে আর কোনো সম্পর্ক থাকে না।

🧪 Shallow Copy Example

const original = {
  name: "Ali",
  address: {
    city: "Dhaka",
  },
};

const shallowCopy = { ...original }; // Spread = shallow copy

shallowCopy.address.city = "Chittagong";

console.log(original.address.city); // Output: "Chittagong" ❌ (unexpected)

📌 Explanation:

Even though we copied original into shallowCopy, changing address.city in shallowCopy also affected the original, because nested objects are still linked (same reference).

📗 বাংলা: Shallow copy-তে address অবজেক্টটি কপি হয়নি, শুধু রেফারেন্স গেছে। তাই যেকোনো পরিবর্তন মূল অবজেক্টেও প্রভাব ফেলে।


🔁 Deep Copy Example

const original = {
  name: "Ali",
  address: {
    city: "Dhaka",
  },
};

const deepCopy = JSON.parse(JSON.stringify(original)); // Deep copy

deepCopy.address.city = "Chittagong";

console.log(original.address.city); // Output: "Dhaka" ✅ (original unchanged)

📌 Explanation:

We used JSON.stringify() + JSON.parse() to create a deep copy — now changing deepCopy doesn’t affect the original.

📗 বাংলা: Deep copy-তে ভিতরের সব স্তরের ডেটা নতুনভাবে তৈরি হয়। তাই deepCopy পরিবর্তন করলে original অপরিবর্তিত থাকে।


🧠 Summary Table:

Feature Shallow Copy Deep Copy
🔄 Nested Object Reference shared Fully copied
💥 Changes affect original? ✅ Yes (for nested) ❌ No
🛠 Methods Object.assign(), Spread ... JSON.parse(JSON.stringify()), lodash cloneDeep()
⚠️ Limitation Not safe for deeply nested or complex types Can be slower, but safer

✅ When to Use Which?

Situation Copy Type
Object has only primitive values (no nesting) ✅ Shallow Copy
Object has nested structure and needs full separation ✅ Deep Copy