WeakSet এর মাধ্যমে Non-primitives সংরক্ষণ করা

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

228

WeakSet ES6 এর একটি নতুন ডেটা স্ট্রাকচার যা non-primitive values (অবজেক্ট, অ্যারে, ফাংশন, ইত্যাদি) সংরক্ষণের জন্য ব্যবহৃত হয়। এটি একটি বিশেষ ধরনের সেট, যেখানে শুধুমাত্র অবজেক্ট টাইপের ডেটা রাখা যায়। এর প্রধান বৈশিষ্ট্য হল, এটি weak references ব্যবহার করে, যার ফলে garbage collection এর সময় অপ্রয়োজনীয় অবজেক্টগুলো অটোমেটিক্যালি মুছে যায়।

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

  1. Non-primitive values: WeakSet শুধুমাত্র অবজেক্ট টাইপের মান সংরক্ষণ করতে পারে। প্রিমিটিভ মান (যেমন string, number, boolean) এখানে রাখা যাবে না।
  2. Weak references: WeakSet অবজেক্টগুলোর প্রতি weak reference রাখে। এর মানে, যদি কোনো অবজেক্ট WeakSet থেকে রেফারেন্স হারিয়ে ফেলে (অর্থাৎ, যদি সেটি আর কোনো জায়গায় ব্যবহার না হয়), তাহলে গার্বেজ কালেক্টর (garbage collector) এটি মুছে ফেলবে।
  3. No enumeration: WeakSet এর উপাদানগুলো সরাসরি এক্সেস বা enumerate (loop) করা যায় না। অর্থাৎ, আপনি একটি WeakSet এর উপাদানগুলো ইটারেট (loop) করতে পারবেন না, যা সাধারণ Set এর ক্ষেত্রে করা যায়।

WeakSet এর সিনট্যাক্স

let weakSet = new WeakSet([iterable]);
  • iterable (ঐচ্ছিক): একটি অ্যারে বা অন্য কোনো iterable অবজেক্ট, যার উপাদানগুলি WeakSet এ যোগ করা যাবে।

WeakSet এর প্রধান মেথডগুলো

  1. add(value): একটি অবজেক্ট WeakSet এ যোগ করে।
  2. delete(value): একটি অবজেক্ট WeakSet থেকে মুছে ফেলে।
  3. has(value): চেক করে যে কোনো অবজেক্ট WeakSet এ রয়েছে কিনা।

WeakSet এর ব্যবহার

উদাহরণ 1: অবজেক্ট সংরক্ষণ

let obj1 = { name: "John" };
let obj2 = { name: "Jane" };

let weakSet = new WeakSet();

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

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

এখানে, weakSet এ দুটি অবজেক্ট যোগ করা হয়েছে এবং has() মেথড ব্যবহার করে আমরা চেক করেছি যে এই অবজেক্টগুলো WeakSet এ আছে কিনা।

উদাহরণ 2: গার্বেজ কালেকশন এবং WeakSet

যেহেতু WeakSet weak references ব্যবহার করে, এর মানে হলো, যদি কোনো অবজেক্ট অন্য কোনো জায়গায় রেফারেন্স হারিয়ে ফেলে, তা হলে সেটি WeakSet থেকে স্বয়ংক্রিয়ভাবে মুছে যাবে। গার্বেজ কালেক্টরের সাহায্যে এটি হয়ে থাকে।

let obj1 = { name: "John" };
let weakSet = new WeakSet();

weakSet.add(obj1);

// obj1 কে null করে দিলে, গার্বেজ কালেক্টর অবজেক্টটি মুছে ফেলবে
obj1 = null;

// গার্বেজ কালেক্টর কাজ করার পরে, weakSet এ obj1 আর থাকবে না
console.log(weakSet.has(obj1));  // false

এখানে, যখন obj1 কে null দিয়ে দেয়া হয়, তখন WeakSet থেকে স্বয়ংক্রিয়ভাবে obj1 মুছে যায়, কারণ এর আর কোনো রেফারেন্স নেই।


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

ফিচারWeakSetSet
ধরনশুধুমাত্র অবজেক্ট সংরক্ষণ করা যায়সব ধরনের মান (primitive এবং non-primitive) সংরক্ষণ করা যায়
Enumerationইটারেশন বা enumeration সম্ভব নয়ইটারেশন সম্ভব
Garbage Collectionঅবজেক্টগুলোর রেফারেন্স হারালে তা গার্বেজ কালেক্টরের মাধ্যমে মুছে যায়অবজেক্টগুলো গার্বেজ কালেক্টর দ্বারা মুছে যায় না
প্রতিলিপি (Copying)WeakSet এর কোনো প্রতিলিপি (clone) করা যায় নাSet এর প্রতিলিপি (clone) করা যায়

WeakSet এর ব্যবহার কেন গুরুত্বপূর্ণ?

  1. Garbage Collection: WeakSet অবজেক্টগুলোর প্রতি weak reference রাখে, যা গার্বেজ কালেক্টরের মাধ্যমে অপ্রয়োজনীয় অবজেক্টগুলোকে অটোমেটিক্যালি মুছে ফেলতে সহায়তা করে।
  2. Private Data: WeakSet অবজেক্টের প্রাইভেট ডেটা সংরক্ষণ করার জন্য উপকারী, যেহেতু বাইরের কোড এই অবজেক্টগুলোর উপাদান দেখতে বা মডিফাই করতে পারবে না।
  3. Memory Management: যেহেতু অবজেক্টগুলো গার্বেজ কালেক্টর দ্বারা মুছে যায়, এটি স্মৃতি ব্যবস্থাপনার জন্য খুব উপকারী।

সারাংশ

WeakSet একটি বিশেষ ধরনের ডেটা স্ট্রাকচার যা শুধুমাত্র অবজেক্টগুলোর জন্য কাজ করে এবং গার্বেজ কালেকশন সুবিধা প্রদান করে। এটি কেবলমাত্র অবজেক্টগুলোর জন্য উপযোগী এবং ইটারেশন করা যায় না, যা আপনাকে non-primitive values সংরক্ষণের জন্য আরও কার্যকর পদ্ধতি দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...