به نام خدا با سلام خدمت کد ایتی های عزیز. در ادامه سری مقالات اموزشی جاوا اسکریپت این جلسه به تفاوت ميان Shallow و Deep کپي در جاوا اسکريپت خواهيم پرداخت با ما همراه باشید.
تفاوت ميان Shallow و Deep کپي در چيست؟
Shallow Copying
پی کم عمق یه کپی بیتی از یه آبجکته. یه آبجکت جدید ایجاد میشه که یه کپی دقیق از مقادیر موجود در آبجکت اصلی رو داره. اگه هر یه از فیلدهای آبجکت ارجاع به آبجکتهای دیگه باشه، فقط آدرسهای مرجع کپی میشن یعنی فقط آدرس توی حافظه کپی میشه.
1 2 3 |
const empDetails = { name: "John", age: 25, expertise: "Software Developer" } |
برای ایجاد یه نسخه تکراری
1 |
const empDetailsShallowCopy = empDetails //Shallow copying! |
اگه مقداری از ویژگی رو تو یه تکراری به این صورت تغییر بدیم:
1 |
empDetailsShallowCopy.name = "Johnson" |
دستور بالا همچنین نام empDetails
رو تغییر میده، چون ما یه کپی کم عمق داریم. یعنی ما دادههای اصلی رو هم از دست می دیم.
کپی عمیق(Deep)
یه کپی عمیق همه فیلدها رو کپی میکنه و از حافظه تخصیص یافته به صورت پویا که توسط فیلدها به آن اشاره میشه کپی میکنه. کپی عمیق زمانی اتفاق میوفته که یه آبجکت همراه با پراپرتیهایی که به اون اشاره داره کپی شه.
1 2 3 |
const empDetails = { name: "John", age: 25, expertise: "Software Developer" } |
یه کپی عمیق با استفاده از خواص از آبجکت اصلی در متغیر جدید ایجاد کنیم:
1 2 3 4 5 |
const empDetailsDeepCopy = { name: empDetails.name, age: empDetails.age, expertise: empDetails.expertise } |
اگه empDetailsDeepCopy.name
رو تغییر بدین، فقط empDetailsDeepCopy
و نه empDetails
رو تحت تأثیر قرار میده.
خب دوستان عزيز به پايان جلسه تفاوت بين Shallow و Deep کپي در جاوا اسکريپت رسيديم اميدواريم اين مقاله براي شما مفيد واقع شده باشد.
دیدگاهتان را بنویسید