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 پاک میشن -
کاربرد: نگهداری اطلاعات خصوصی یا کنترل وضعیت اشیاء بدون نگرانی از مدیریت حافظه.
HTML
Tailwind Css
Bootstrap 5
Java script
++C
Python
Three.js
Gsap
Sass
SQL
React