پرسش خود را بپرسید

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

٤١,٨٣٦
طلایی
٥٢
نقره‌ای
٩٦٨
برنزی
٢٨٤
تاریخ
٢ روز پیش

پاسخ شما