ویرگول
ورودثبت نام
رهام رفیعی تهرانی
رهام رفیعی تهرانیبرنامه نویسی یک شغل نیست، یک هنره.
رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۱ دقیقه·۴ سال پیش

آیا تابع Object.freeze واقعا آبجکت را غیرقابل تغییر میکند؟

در زبان جاوااسکریپت، آبجکت ها قابل تغییرند. چه آنها را با const تعریف کنید چه نکنید. در جاوااسکریپت، برای اینکه آبجکتی را غیرقابل تغییر کنیم، تابعی را صدا می کنیم به نام Object.freeze . وظیفه این تابع این است که مشخصه های آبجکت را غیرقابل تغییر کند.

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

اما همان طور که در خط پانزدهم می بینید، مقدار مشخصه city از آبجکت address تغییر کرده است. در واقع این تابع تنها بر مشخصه های سطح اول آبجکت اثر میگذارد. اگر مشخصه، خود یک آرایه یا آبجکت باشد، تابع freeze امکان جلوگیری از تغییر مقادیر داخلی را ندارد.

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


javascriptprogramming
۲
۱
رهام رفیعی تهرانی
رهام رفیعی تهرانی
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید