برنامه نویسی

کپی اشیاء در جاوا اسکریپت – انجمن DEV

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

فرض کنید مجموعه ای از محصولات داریم و باید یک ویژگی جدید با مالیات های مربوط به هر محصول اضافه کنیم. اولین کار این است که از طریق آرایه با نقشه عبور کنیم زیرا آنچه می دانیم تغییرناپذیر است، این بدان معنی است که آرایه اصلی را تحت تأثیر قرار نمی دهد.

چیدمان محصول

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

تغییر شی نقشه

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

خطای شی اصلی و کپی

برای این کار از ساختارشکنی استفاده می کنیم و ببینیم چه نتایجی به دست می آوریم. با deconstructor یک کپی از شی تولید می کنیم و ویژگی مالیاتی جدید را اضافه می کنیم و آن را در یک ثابت ذخیره می کنیم تا بعداً آن را به عنوان نتیجه تابع برگردانیم.

کپی شی با دیکانسترکتور

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

نتیجه در کنسول

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

اصلاح آرایه شی

این همچنین روی چیدمان شی اصلی تأثیر گذاشت، اما چه لعنتی! این خطایی است که می‌توانیم مرتکب شویم، می‌خواهیم ببینیم چگونه آن را حل کنیم تا بتوانیم کپی عمیقی از اشیا ایجاد کنیم.

نتیجه در کنسول تعمیر

ساده ترین راه برای انجام این کار این است که شی را به json از نوع رشته تبدیل کنید و سپس آن را دوباره به یک شی تبدیل کنید با این کار مطمئن می شویم که JS یک بخش حافظه مستقل جدید ایجاد می کند و اکنون می توانیم شی جدید را بدون ترس از تأثیرگذاری تغییر دهیم. اصلی

کپی شی عمیق

این تنها یک راه برای ایجاد کپی عمیق است، اما می توان آن را به روش های مختلف انجام داد.

کپی از اشیا بدون خطا

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

نوشته های مشابه

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

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

دکمه بازگشت به بالا