WeakSet
WeakSet
یک نوع ساختار داده در جاوااسکریپت هست که فقط میتونه اشیاء (Objects) رو ذخیره کنه.
برخلاف Set
که میتونه هر نوع دادهای رو نگه داره (اعداد، رشتهها، …)، در WeakSet
فقط و فقط Object معتبره.
🔹 ایجاد یک WeakSet
📌 خروجی توی کنسول مستقیم نمایش داده نمیشه (آیتمها hidden هستن) چون WeakSet برای مدیریت حافظه بهینهسازی شده.
🔹 ویژگیهای WeakSet
-
فقط Object رو قبول میکنه.
-
عنصر primitive مثل
number
,string
,boolean
رو قبول نمیکنه. -
اعضای داخل
WeakSet
قابل enumeration نیستن → یعنی نمیشه پیمایش کرد (مثلfor...of
,forEach
). -
عناصرش ضعیف (weak) هستن → اگر جایی دیگه رفرنسی به شیء وجود نداشته باشه، به طور خودکار توسط Garbage Collector پاک میشه.
🔹 متدهای WeakSet
-
add(value)
→ اضافه کردن یک شیء -
delete(value)
→ حذف کردن یک شیء -
has(value)
→ بررسی وجود شیء
🔸 مثال:
📌 توجه کن → ws.has({ id: 1 })
نتیجهاش false شد چون اون آبجکت جدیدی هست و رفرنسی به objA
نداره.
🔹 کاربردهای WeakSet
1️⃣ ذخیره داده خصوصی برای اشیاء
گاهی میخواییم یه سری دادهها رو به اشیاء اختصاص بدیم بدون اینکه کسی از بیرون بهش دسترسی داشته باشه.
2️⃣ مدیریت حافظه بهینه
از اونجایی که آبجکتهای داخل WeakSet به صورت ضعیف نگهداری میشن، وقتی یه آبجکت دیگه جایی رفرنس نداشته باشه، به صورت خودکار پاک میشه و نیازی به مدیریت دستی حافظه نیست.
🎯 تمرین عملی – WeakSet در مرورگر
📌 نتیجهگیری
-
WeakSet
مثلSet
هست ولی:
✅ فقط آبجکت نگه میداره
✅ قابل پیمایش نیست
✅ رفرنسها ضعیف هستن → به صورت خودکار توسط Garbage Collector پاک میشن -
کاربرد: نگهداری اطلاعات خصوصی یا کنترل وضعیت اشیاء بدون نگرانی از مدیریت حافظه.