Skip to content

JavaScript WeakSet

WeakSet — bu faqat obyektlardan iborat bo'lgan to'plamdir. Oddiy Set dan farqli o'laroq, u o'z ichiga raqam yoki matn kabi oddiy qiymatlarni (primitive) ololmaydi.


1. WeakSet qanday ishlaydi?

WeakSet obyektlarga "kuchsiz havola" (weak reference) saqlaydi. Bu shuni anglatadiki, agar dasturda o'sha obyektga boshqa hech qanday havola qolmasa, u JavaScript-ning xotira tozalagichi (Garbage Collector) tomonidan o'chirib yuborilishi mumkin. Obyekt xotiradan o'chirilishi bilan u avtomatik ravishdag WeakSet dan ham yo'qoladi.

Misol

js
// WeakSet yaratish
let meningSetim = new WeakSet();

// Obyekt yaratish
let odam = { ism: "Ali", yosh: 25 };

// Obyektni qo'shish
meningSetim.add(odam);

// Tekshirish
console.log(meningSetim.has(odam)); // true

2. Asosiy farqlar (Set vs WeakSet)

XususiyatSetWeakSet
Qiymat turlariHar qanday tur (raqam, matn, obyekt va h.k.)Faqat obyektlar
Xotira (Garbage Collection)Elementlar xotirada qoladi (to'plamda borligi uchun)Elementlar xotiradan o'chib ketishi mumkin
IteratsiyaforEach, for..of ishlaydiIteratsiya qilib bo'lmaydi
Hajmisize xususiyati mavjudsize xususiyati yo'q

3. Metodlar

WeakSet juda cheklangan metodlarga ega:

  • add(obyekt): Yangi obyekt qo'shadi.
  • has(obyekt): Obyekt borligini tekshiradi (true/false).
  • delete(obyekt): Obyektni to'plamdan o'chiradi.

⚠️ E'tibor bering: Unda clear() metodi yoki takrorlash (loop) imkoniyati yo'q.


4. Qachon ishlatiladi?

WeakSet asosan obyektlarni "belgilab qo'yish" yoki ularni kuzatish (monitoring) uchun ishlatiladi. Masalan, biror obyekt bilan oldin ishlanganmi yoki yo'qligini tekshirishda qulay, chunki obyekt foydalanilmay qolganda, u xotirani band qilib turmaydi.

js
const tashrifBuyurganlar = new WeakSet();

function tashrifBuyurdi(mehmon) {
  if (tashrifBuyurganlar.has(mehmon)) {
    console.log(mehmon.ism + " yana keldi.");
  } else {
    tashrifBuyurganlar.add(mehmon);
    console.log(mehmon.ism + " birinchi marta keldi.");
  }
}

Xulosa

WeakSet — bu xotira boshqaruvi (Memory Management) uchun mo'ljallangan maxsus to'plam turi. Agar sizga faqat obyektlar kerak bo'lsa va ularning xotiradan avtomatik o'chib ketishidan xavotir olmasangiz, WeakSet eng yaxshi tanlovdir.