Deep Copy و Shallow Copy د رجاوا اسکریپت
تفاوت بین
کپی عمیق و کپی سطحی
Deep Copy و Shallow Copy
چیست و چگونه میتوان آنها را در جاوا اسکریپت پیادهسازی کرد؟
١ پاسخ
کپی کم عمق (Shallow copy) :
یک کپی کم عمق (Shallow copy) یک شی جدید ایجاد می کند که تکراری از شی اصلی است، اما فقط ساختار سطح بالای شی را کپی می کند. اگر شی اصلی حاوی اشیاء تو در تو (Nested objects) باشد، کپی کم عمق به جای ایجاد تکراری از آنها، ارجاعات را به همان اشیاء تودرتو حفظ می کند. این به این معنی است که تغییرات ایجاد شده در اشیاء تودرتو در کپی کم عمق روی شی اصلی نیز تأثیر می گذارد و بالعکس.
با استفاده از روش هایی مانند ()Object.assign یا عملگر spread (...) میتوان یک کپی کم عمق در جاوا اسکریپت ایجاد کرد.
کپی عمیق (Deep copy):
از سوی دیگر، یک کپی عمیق (Deep copy) ، یک کپی کاملا مستقل از شی اصلی، شامل تمام اشیاء تودرتو ایجاد می کند. ارجاعات به همان اشیاء تودرتو را حفظ نمی کند. در عوض، نمونه های تکراری از آنها ایجاد می کند. تغییرات ایجاد شده در کپی عمیق، شی اصلی را تحت تاثیر قرار نمی دهد و بالعکس.
ایجاد یک کپی عمیق در جاوا اسکریپت می تواند پیچیده تر باشد، به خصوص برای اشیاء عمیق تو در تو. می توان از بازگشت برای ایجاد یک کپی عمیق استفاده کرد، یا می توان از کتابخانه هایی مانند Lodash که یک تابع cloneDeep را برای این منظور ارائه میدهد استفاده کرد.
* باز نشر از سایت: 👇
https://virgool.io/@msein.html372/تفاوت-shallow-copy-و-deep-copy-در-جاوااسکریپت-ynpem9wenkax