Skip to content

JavaScript WeakMap ​

WeakMap — bu kalit-qiymat (key-value) juftliklaridan iborat to'plam bo'lib, unda kalitlar faqat obyektlar bo'lishi shart.


1. WeakMap qanday ishlaydi? ​

WeakMap o'z kalitlariga "kuchsiz havola" (weak reference) saqlaydi. Bu shuni anglatadiki, agar dasturda o'sha obyekt-kalitga boshqa hech qanday havola qolmasa, u JavaScript-ning xotira tozalagichi (Garbage Collector) tomonidan o'chirib yuborilishi mumkin. Obyekt xotiradan o'chirilishi bilan unga tegishli bo'lgan kalit-qiymat juftligi WeakMap dan ham avtomatik o'chib ketadi.

Misol

js
let meningMapim = new WeakMap();
let foydalanuvchi = { ism: "John" };

// Qiymat berish
meningMapim.set(foydalanuvchi, "maxfiy ma'lumot");

// Qiymatni olish
console.log(meningMapim.get(foydalanuvchi)); // "maxfiy ma'lumot"

2. Asosiy farqlar (Map vs WeakMap) ​

XususiyatMapWeakMap
Kalit turlariIstalgan tur (raqam, matn, obyekt)Faqat obyektlar
Xotira boshqaruviKalitlar xotirada qoladiTakrorlanmagan kalitlar o'chib ketadi
IteratsiyaforEach, keys(), values() ishlaydiIteratsiya qilib bo'lmaydi
Hajmisize xususiyati borsize xususiyati yo'q

3. Metodlar ​

WeakMap faqat ma'lum bir obyekt-kalit bilan ishlashga mo'ljallangan va cheklangan metodlarga ega:

  • set(kalit, qiymat): Kalitga mos qiymatni saqlaydi.
  • get(kalit): Kalitga mos qiymatni qaytaradi.
  • has(kalit): Kalit borligini tekshiradi (true/false).
  • delete(kalit): Kalit va uning qiymatini o'chiradi.

4. Qachon ishlatiladi? ​

Obyektlarni kuzatish (Tracking) ​

Obyektlar haqida qo'shimcha ma'lumotlarni saqlash uchun qulay. Masalan, foydalanuvchi sahifaga necha marta kirganini hisoblamoqchisiz, lekin foydalanuvchi obyekti o'chib ketganda bu ma'lumot ham xotirani band qilmasligi kerak:

js
const tashriflar = new WeakMap();

function yangiTashrif(foydalanuvchi) {
  let soni = tashriflar.get(foydalanuvchi) || 0;
  tashriflar.set(foydalanuvchi, soni + 1);
}

Maxfiy ma'lumotlar (Privacy) ​

Ilgari, JavaScript-da klasslarning ichki (private) xususiyatlarini yashirish uchun WeakMap dan foydalanilgan. Tashqi kod WeakMap ichini ko'ra olmaydi (chunki u iterable emas).


Xulosa ​

WeakMap — bu xotira tejamkorligi va xavfsizlik uchun mo'ljallangan maxsus vosita. Agar sizga kalit sifatida obyektlar kerak bo'lsa va ularning butun dastur davomida xotirani band qilib turishini xohlamasangiz, WeakMap ideal tanlovdir.