WeakSet & WeakMap Kya Hote Hai?
JavaScript me memory management ke liye in advanced data structures ko samjhein.
Introduction
JavaScript mein WeakSet aur WeakMap ES6 mein introduce kiye gaye special data structures hain. Inka primary use memory management aur garbage collection ko behtar banana hai. "Weak" reference ka matlab hai ki agar kisi object ka reference sirf in structures mein hi bacha hai, to JavaScript ka garbage collector us object ko memory se hata sakta hai.
1. WeakSet Kya Hota Hai?
WeakSet ek special type ka collection object hai jo sirf objects ko hi store karta hai, primitives (jaise string, number) nahi. Iska naam “weak” isliye hai kyunki ismein store kiye gaye objects garbage collected ho sakte hain agar unka kahin aur reference nahi ho. Ye memory efficient hota hai.
Key Points:
- Sirf objects hi store ho sakte hain. Primitives allowed nahi hain.
- Ismein duplicate objects allow nahi hote.
- WeakSet mein items iterate nahi kiye ja sakte (koi
for...of
yaforEach
nahi). - Garbage Collection friendly hota hai, jisse memory efficient banti hai.
let weakSet = new WeakSet();
let student = {name: "Rahul"};
weakSet.add(student);
console.log(weakSet.has(student)); // true
student = null;
// Ab object ka aur koi reference nahi hai.
// Garbage collector is 'student' object ko memory se hata sakta hai.
2. WeakMap Kya Hota Hai?
WeakMap ek built-in object hai jo key-value pairs store karta hai, jahan keys sirf objects ho sakte hain. Values kisi bhi type ki ho sakti hain. WeakMap bhi "weakly held" keys ka use karta hai.
Key Points:
- Keys sirf objects ho sakte hain.
- Values kuch bhi ho sakti hain.
- Keys ko weakly hold karta hai – agar key ka aur koi reference nahi bacha, to Garbage Collector us entry ko hata sakta hai.
- Iteration possible nahi hai (no
for...of
,keys()
,values()
nahi hote).
let weakMap = new WeakMap();
let person = { name: "Rohit" };
weakMap.set(person, "Secret Data");
console.log(weakMap.get(person)); // "Secret Data"
person = null;
// Ab 'person' object aur usse associated "Secret Data" garbage collection ke liye eligible hain.
WeakSet vs. WeakMap
Feature | WeakSet | WeakMap |
---|---|---|
Store kya karta hai? | Sirf objects (no values) | Object keys with any values |
Duplicate allow? | No duplicates | Keys are unique |
Keys/Values | Sirf objects (as values) | Object as key, value kuch bhi |
Iteration allowed? | Not allowed | Not allowed |
Garbage Collection | Supported | Supported |
Use-case | Object existence track karna | Private data store karna |
Conclusion
WeakSet use karo jab tumhe sirf object ki presence track karni ho, bina us object ko strong memory reference diye. WeakMap use karo jab tumhe kisi object ke saath secret ya private data store karna ho, bina memory leak ka risk liye. Yeh dono cheeze memory efficient hoti hain, aur jab kisi object ka reference chhoot jaata hai, to JavaScript automatically memory clear kar deti hai.
Test Your Knowledge!
Kya aap WeakSet & WeakMap ke baare mein seekh chuke hain? Chaliye dekhte hain!
Start Quiz