Shallow vs. Deep Copying in JavaScript

تفاوت ميان Shallow و Deep کپي

به نام خدا با سلام خدمت کد ایتی های عزیز. در ادامه سری مقالات اموزشی جاوا اسکریپت این جلسه به تفاوت ميان Shallow و Deep کپي  در جاوا اسکريپت خواهيم پرداخت با ما همراه باشید.

تفاوت ميان Shallow و Deep کپي در چيست؟

Deep copy and Shallow copy in javascript

تفاوت ميان Shallow و Deep کپي

Shallow Copying

پی کم عمق یه کپی بیتی از یه آبجکته. یه آبجکت جدید ایجاد می‌شه که یه کپی دقیق از مقادیر موجود در آبجکت اصلی رو داره. اگه هر یه از فیلدهای آبجکت ارجاع به آبجکت‌های دیگه باشه، فقط آدرس‌های مرجع کپی میشن یعنی فقط آدرس توی حافظه کپی می‌شه.

const empDetails = {
  name: "John", age: 25, expertise: "Software Developer"
}

برای ایجاد یه نسخه تکراری

const empDetailsShallowCopy = empDetails    //Shallow copying!

اگه مقداری از ویژگی رو تو یه تکراری به این صورت تغییر بدیم:

empDetailsShallowCopy.name = "Johnson"

دستور بالا همچنین نام ‍empDetails رو تغییر میده، چون ما یه کپی کم عمق داریم. یعنی ما داده‌های اصلی رو هم از دست می دیم.

کپی عمیق(Deep)

یه کپی عمیق همه فیلدها رو کپی میکنه و از حافظه تخصیص یافته به صورت پویا که توسط فیلدها به آن اشاره می‌شه کپی میکنه.  کپی عمیق زمانی اتفاق میوفته که یه آبجکت همراه با پراپرتی‌هایی که به اون اشاره داره کپی شه.

const empDetails = {
  name: "John", age: 25, expertise: "Software Developer"
}

یه کپی عمیق با استفاده از خواص از آبجکت اصلی در متغیر جدید ایجاد کنیم:

const empDetailsDeepCopy = {
  name: empDetails.name,
  age: empDetails.age,
  expertise: empDetails.expertise
}

اگه ‍‍empDetailsDeepCopy.name رو تغییر بدین، فقط empDetailsDeepCopy و نه empDetails رو تحت تأثیر قرار میده.

خب دوستان عزيز به پايان جلسه تفاوت بين Shallow و Deep کپي در جاوا اسکريپت رسيديم اميدواريم اين مقاله براي شما مفيد واقع شده باشد.

ساير مقالات:

 

 

 

 

 

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]
تصویر علی فرجی

علی فرجی

علی فرجی هستم، برنامه نویس جاوا اسکریپت و ریکت با بیش از 5 سال تجربه. من عاشق برنامه نویسیم و همیشه به دنبال یادگیری چیزهای جدید هستم.همچنین یکی از بنیانگذار های سایت کدایت ، یک سایت آموزش برنامه نویسی در حوزه جاوا اسکریپت، ریکت، اندروید و ... هستم. امیدوارم بتوانم با دانش و تجربه خود به سایر برنامه نویسان کمک کنم تا در این زمینه پیشرفت کنند.

مقالات آموزشگاه کدایت

جدیدترین مقالات و آموزش‌های تکمیلی برنامه‌نویسی را در وبلاگ کدایت بخوانید؛ مرجعی برای یادگیری مباحث پیشرفته کاتلین، توسعه اندروید، وب و فناوری‌های نوین.​

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آموزشگاه کدایت

پلتفرم یادگیری مهارت‌های مهندسی نرم‌افزار

آموزشگاه کدایت، مرجع تخصصی یادگیری برنامه‌نویسی مدرن، توسعه موبایل و وب است. هدف ما، تسهیل ورود شما به بازار کار از طریق آموزش دانش روز، انتقال تجربیات واقعی و تربیت متخصصان توانمند صنعت نرم‌افزار است.

اطلاعات تماس

تمامی حقوق این وب‌سایت متعلق به مجموعه کدایت است.

طراحی سایت : ایپک