Object Protection
در جاوااسکریپت برای محافظت از اشیاء (Objects) چند روش مختلف وجود داره که هرکدوم سطح متفاوتی از محدودیت ایجاد میکنن.
1️⃣ جلوگیری از افزودن پراپرتی جدید → ()Object.preventExtensions
-
نمیذاره پراپرتی جدید به شیء اضافه بشه.
-
ولی میتونی پراپرتیهای موجود رو تغییر یا حذف کنی.
2️⃣ مهر و موم کردن شیء → ()Object.seal
-
جلوی اضافه کردن و حذف کردن رو میگیره.
-
ولی تغییر مقدار پراپرتیها مجازه.
3️⃣ فریز کردن شیء → ()Object.freeze
-
کاملترین سطح حفاظت.
-
هیچ افزودن، حذف یا تغییری مجاز نیست.
4️⃣ بررسی وضعیت شیء
-
Object.isExtensible(obj)
→ میشه پراپرتی جدید اضافه کرد؟ -
Object.isSealed(obj)
→ شیء سیل شده؟ -
Object.isFrozen(obj)
→ شیء فریز شده؟
5️⃣ کنترل پراپرتیها با Descriptor
میتونی سطح دسترسی تکتک پراپرتیها رو مشخص کنی:
📊 جدول مقایسهای
متد / ویژگی | افزودن | حذف | تغییر مقدار | توضیح |
---|---|---|---|---|
preventExtensions | ❌ | ✅ | ✅ | فقط نمیذاره پراپرتی جدید اضافه بشه |
seal | ❌ | ❌ | ✅ | فقط تغییر مقدار مجازه |
freeze | ❌ | ❌ | ❌ | کاملاً immutable میکنه |
defineProperty | کنترل دقیق | کنترل دقیق | کنترل دقیق | روی هر پراپرتی جدا میشه تنظیم کرد |
✨ اینا ابزارهای اصلی هستن برای محافظت از Object تو جاوااسکریپت.