WeakMap এবং WeakSet এর ধারণা

WeakMap এবং WeakSet - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

262

WeakMap এবং WeakSet ES6 (ECMAScript 2015) এ নতুন ডেটা স্ট্রাকচার হিসেবে যোগ করা হয়েছে। এই ডেটা স্ট্রাকচারগুলো সাধারণ Map এবং Set এর মতোই কাজ করে, তবে এদের কিছু বিশেষত্ব রয়েছে যা গারবেজ কালেকশন (Garbage Collection) এবং মেমরি ব্যবস্থাপনায় গুরুত্বপূর্ণ ভূমিকা পালন করে। এই স্ট্রাকচারগুলো "weak" (দুর্বল) কিভাবে কাজ করে, তা বুঝতে হলে তাদের পার্থক্য এবং ব্যবহারের ক্ষেত্রে মেমরি ব্যবস্থাপনার ধারণা বুঝতে হবে।


1. WeakMap কি?

WeakMap হল একটি বিশেষ ধরনের Map (অথবা key-value পেয়ার) যেখানে key গুলি weakly referenced হয়। এর মানে হল যে যদি কোন key আর কোনো রেফারেন্স না পায়, তবে JavaScript Garbage Collector সেই key-value পেয়ারটি মেমরি থেকে সরিয়ে ফেলতে পারে। WeakMap এর মধ্যে key গুলি শুধু অবজেক্ট (objects) হতে পারে, এবং এগুলি মেমরি পরিচালনার জন্য গারবেজ কালেকশন এর সুবিধা দেয়।

WeakMap এর বৈশিষ্ট্য:

  • Key গুলি শুধুমাত্র অবজেক্ট হতে পারে, এবং primitive values (যেমন string, number) key হিসেবে ব্যবহার করা যায় না।
  • WeakMap এর মধ্যে key-value pair গুলি গারবেজ কালেকশনের দ্বারা মুছে ফেলা হয়, যখন key অব্যবহৃত হয়।
  • WeakMap এ কোন মেথড নেই যেমন size বা clear, কারণ এটি গারবেজ কালেকশন ব্যবস্থার সাথে সম্পর্কিত।

উদাহরণ:

let obj = {};
let weakMap = new WeakMap();

// key হিসেবে অবজেক্ট ব্যবহার করা যাবে
weakMap.set(obj, 'Some value');

console.log(weakMap.get(obj));  // Some value

obj = null;  // obj আর কোথাও রেফারেন্স করা হচ্ছে না

// এখানে, গারবেজ কালেকটর obj এর জন্য সংরক্ষিত মান মুছে ফেলবে

এখানে, weakMap.set() দ্বারা অবজেক্টের জন্য একটি মান নির্ধারণ করা হয়, এবং যখন অবজেক্ট null করা হয়, তখন গারবেজ কালেকশন স্বয়ংক্রিয়ভাবে এই key-value পেয়ারটি মুছে ফেলবে।


2. WeakSet কি?

WeakSet একটি বিশেষ ধরনের Set যেখানে values গুলি weakly referenced হয়। অর্থাৎ, যদি কোনো value আর কোথাও রেফারেন্স না পায়, তবে WeakSet সেটি মেমরি থেকে মুছে ফেলে। এর মধ্যে শুধুমাত্র অবজেক্টই থাকতে পারে এবং primitive values (যেমন string, number, boolean) রাখা সম্ভব নয়।

WeakSet এর বৈশিষ্ট্য:

  • WeakSetvalues গুলি শুধুমাত্র অবজেক্ট হতে পারে।
  • এটি কোনো পদ্ধতি বা মেথড প্রদান করে না যা অবজেক্টের সাইজ জানাবে বা এর মধ্যে উপাদান মুছে ফেলবে, কারণ এগুলি গারবেজ কালেকশনের আওতায় আসে।
  • একবার কোনো অবজেক্ট গারবেজ কালেকশনের মাধ্যমে মুছে গেলে, তা WeakSet থেকে সরিয়ে ফেলা হয়।

উদাহরণ:

let obj1 = {};
let obj2 = {};
let weakSet = new WeakSet();

weakSet.add(obj1);
weakSet.add(obj2);

console.log(weakSet.has(obj1));  // true

obj1 = null;  // obj1 আর কোথাও রেফারেন্স করা হচ্ছে না

// গারবেজ কালেকশনের মাধ্যমে obj1 এর উপাদান মুছে ফেলা হবে
console.log(weakSet.has(obj1));  // false

এখানে, weakSet.add() দিয়ে অবজেক্টগুলি যোগ করা হয়েছে এবং যখন obj1 কে null করা হয়, তখন গারবেজ কালেকশন obj1 কে মুছে ফেলে এবং has() চেক করার পর তা আর পাওয়া যায় না।


WeakMap এবং WeakSet এর মধ্যে পার্থক্য

বৈশিষ্ট্যWeakMapWeakSet
Key/ValueKey-value পেয়ার (Key হল অবজেক্ট)শুধুমাত্র Value (Value হল অবজেক্ট)
Key TypeKey শুধুমাত্র অবজেক্ট হতে পারেশুধুমাত্র অবজেক্ট রাখা যায়
Garbage Collectionগারবেজ কালেকশনের মাধ্যমে key-value মুছে যায়গারবেজ কালেকশনের মাধ্যমে value মুছে যায়
SizeSize মেথড নেইSize মেথড নেই
Primitive TypesPrimitive types key হিসেবে ব্যবহার করা যায় নাPrimitive types value হিসেবে ব্যবহার করা যায় না
Use CaseKey-value সম্পর্ক স্থাপন, অবজেক্ট সংরক্ষণUniqueness চেক করা, অবজেক্ট集合 গঠন

সারাংশ

WeakMap এবং WeakSet এর মূল সুবিধা হল যে এগুলো গারবেজ কালেকশন ব্যবস্থার সাথে সংযুক্ত। এগুলোর মাধ্যমে আপনি মেমরি ব্যবস্থাপনা আরও দক্ষভাবে করতে পারবেন, যেখানে অবজেক্টগুলি যখন আর ব্যবহার না হয় তখন তা স্বয়ংক্রিয়ভাবে মুছে যায়। WeakMap এবং WeakSet এর মাধ্যমে আপনি একাধিক অবজেক্টের মধ্যে সম্পর্ক তৈরি করতে পারেন, তবে এগুলোর মধ্যে মেমরি ব্যবস্থাপনার সুবিধাগুলি হালকা ও স্মার্টভাবে কাজ করে।

Content added By
Promotion

Are you sure to start over?

Loading...