WeakSet Kya hota hai ?
JavaScript mein WeakSet ek special type ka collection object hota 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.
WeakSet mein koi order nahi hota aur na hi ismein duplicate values allowed hoti hain. Ye methods provide karta hai jaise add()
, delete()
, aur has()
— lekin ismein size property ya iteration (loop) ka support nahi hota.
Ye un situations mein useful hai jahan aapko kisi object ke existence ko track karna ho bina usko strongly reference kiye, jaise temporary storage ya private data tracking ke liye.
Key Points :
- Sirf objects hi store ho sakte hain. (Primitive values jaise string, number allowed nahi hote.)
- Ismein duplicates allow nahi hote.
- WeakSet mein items iterate nahi kiye ja sakte. (no for…of, no forEach)
- Garbage Collection friendly hota hai – memory efficient!
Syntax :
let ws = new WeakSet();
let obj1 = { name: "Amit" };
let obj2 = { name: "Sita" };
ws.add(obj1);
ws.add(obj2);
ws.has(obj1); // true
ws.delete(obj2); // true
Example :
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 memory free kar dega jab zarurat hogi
WeakMap Kya hota hai ?
WeakMap JavaScript ka ek built-in object hai jo key-value pairs store karta hai, jahan keys sirf objects ho sakte hain, primitive types (jaise strings ya numbers) nahi.
Iska sabse bada feature yeh hai ki keys “weakly held” hoti hain – matlab agar koi key object memory se hat jaye (yaani uska reference kahi nahi bacha), to WeakMap us entry ko automatically garbage collect kar deta hai.
WeakMap iterable nahi hota – na hi aap usme forEach
, keys()
ya values()
use kar sakte ho. Yeh mainly tab useful hota hai jab aapko object-specific data chhupakar rakhna ho bina memory leak ke risk ke.
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 object ko hata sakta hai.
- Iteration possible nahi hai (no for…of, no keys(), values() etc.)
- Security aur memory-sensitive data ke liye useful hai.
Syntax :
let wm = new WeakMap();
let user = {name: "Priya"};
wm.set(user, "User Info");
console.log(wm.get(user)); // "User Info"
wm.delete(user);
Example :
let weakMap = new WeakMap();
let person = { name: "Rohit" };
weakMap.set(person, "Secret Data");
console.log(weakMap.get(person)); // "Secret Data"
person = null;
// Garbage collector yeh "person" aur uska data hata sakta hai agar koi aur reference nahi bacha.
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.
Quiz: Test Your Knowledge on WeakSet & WeakMap in JavaScript
Bonus: Practical Application!
Aaj hi JavaScript me WeakSet aur WeakMap ka upayog karke dekhein!
WeakSet aur WeakMap ko achhi tarah samajhne ke liye unki khas properties jaise ki memory management, keys ka behavior, aur garbage collection ke concepts ka istemal karein. Yeh objects especially tab useful hote hain jab aapko lightweight aur secure data structure ki zarurat ho jo automatic memory cleanup support karta ho.