WeakMap অবজেক্ট
JavaScript WeakMap
একটি JavaScript WeakMap হল কী/মান জোড়ার একটি সংগ্রহ যেখানে কীগুলি অবশ্যই বস্তু হতে হবে।
একটি WeakMap তার কীগুলির দুর্বল রেফারেন্স ধারণ করে।
Example
// উইকম্যাপ তৈরি করুন যাক myMap = new WeakMap(); // অবজেক্ট তৈরি করুন let myObj = {fname:"John", lname:"Doe"}; // WeakMap মান সেট করুন myMap.set(myObj, "প্লেয়ার"); // WeakMap মান পান let type = myMap.get(myObj);
বর্জ্য সংগ্রহ
জাভাস্ক্রিপ্ট আবর্জনা সংগ্রহ নামে একটি মেমরি ম্যানেজমেন্ট মেকানিজম ব্যবহার করে।
প্রাথমিক ফাংশন:
দুর্বল নোট
একটি নিয়মিত মানচিত্রের বিপরীতে, একটি দুর্বলম্যাপ তার কীগুলিকে আবর্জনা সংগ্রহ করা থেকে বাধা দেয় না।
যদি একটি প্রোগ্রামে একটি কী (একটি বস্তুর) কোনো রেফারেন্স না থাকে তবে এটি আবর্জনা সংগ্রহের জন্য যোগ্য হয়ে ওঠে।
যখন একটি কী ডাম্প সংগ্রহ করা হয়, তখন তার কী-মান জোড়া WeakMap থেকে সরানো হয়।
Example
যাক myMap = new WeakMap(); let myObj = {fname:"John", lname:"Doe"}; myMap.set(myObj, "গোপন"); myObj = null; // এখন myMap-এ myObj (এবং এর মান) আবর্জনা সংগ্রহ করা হবে
কী অবজেক্ট হতে হবে
WeakMap-এ প্রাথমিক মানগুলি কী হিসাবে ব্যবহার করা যাবে না।
কীগুলি অবশ্যই বস্তু বা অনিবন্ধিত প্রতীক হতে হবে।
ভুল:
let weakMap = new WeakMap(); weakMap.set(42, "মান"); // ত্রুটি! weakMap.set("কী", "মান"); // ত্রুটি! weakMap.set(সত্য, "মান"); // ত্রুটি!
সঠিক:
let weakMap = new WeakMap(); weakMap.set({নাম: "জন"}, "মান"); // ঠিক আছে! weakMap.set([1, 2, 3], "মান"); // ঠিক আছে! weakMap.set(নতুন তারিখ(), "মান"); // ঠিক আছে!
এই সীমাবদ্ধতা বর্জ্য সংগ্রহের প্রক্রিয়ার সাথে সম্পর্কিত; প্রাথমিক মানগুলি বস্তুর মতো আবর্জনা সংগ্রহ করা হয় না।
ট্র্যাকিং বস্তু
WeakMap এ এন্ট্রিগুলি দুর্বল রাখা হয়: যদি অবজেক্ট কীটি অ্যাক্সেসযোগ্য না হয়, তবে এর ম্যাপিং স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়।
এটি বর্জ্য সংগ্রহ ব্লক না করে অবজেক্ট সম্পর্কে ডেটা ট্র্যাক করার জন্য উপযুক্ত।
দর্শকদের মনিটরিং
let text = ""; // ভিজিট কাউন্ট সংরক্ষণ করতে একটি দুর্বলম্যাপ তৈরি করুন const visitsCount = new WeakMap(); // ভিজিটর অবজেক্ট তৈরি করুন const John = {নাম:"জন", বয়স:40}; const Paul = {নাম:"পল", বয়স:41}; const Ringo = {নাম:"রিংগো", বয়স: 42}; const George = {নাম:"জর্জ", বয়স:43}; // ট্র্যাক ভিজিট ট্র্যাক (পল); ট্র্যাক (রিংগো); ট্র্যাক (পল); ট্র্যাক (পল); ট্র্যাক (জন); // দর্শকদের ট্র্যাক করার ফাংশন ফাংশন ট্র্যাক (দর্শক) { let count = visitsCount.get(visitor) || 0; গণনা++; visitsCount.set(দর্শক, গণনা); পাঠ্য += visitor.name + ", বয়স " + visitor.age + ", পরিদর্শন করেছে " + count + " সময়(গুলি)৷
";
}
স্বয়ংক্রিয় পরিস্কার
আপনি যদি একটি ভিজিটর অবজেক্টের সমস্ত রেফারেন্স মুছে ফেলেন:
ভিজিটর ট্র্যাকিং:
জন = null; // জন এর এন্ট্রি এখন WeakMap(ব্যক্তি) থেকে সরানো হবে।
স্বয়ংক্রিয় পরিষ্কার:
উইকম্যাপ মেমরি ব্যবস্থাপনাকে সহজ করে। আপনাকে বস্তুগুলি মুছতে হবে না - সেগুলি স্বয়ংক্রিয়ভাবে আবর্জনা সংগ্রহ করা হয়।
পুনরাবৃত্তি সম্ভব নয়
WeakMaps অ-পুনরাবৃত্ত হয়.
আপনি loops, forEach(), বা কী() দিয়ে কী এবং মানের মাধ্যমে পুনরাবৃত্তি করতে পারবেন না।
আপনি স্কেল অ্যাক্সেস করতে পারবেন না.
| ফাংশন | Map | WeakMap |
|---|---|---|
| পুনরাবৃত্তি (এর...এর জন্য) | ✓ সমর্থন করে | ✗ সমর্থিত নয় |
| forEach() পদ্ধতি | ✓ সমর্থন করে | ✗ সমর্থিত নয় |
| আকার বৈশিষ্ট্য | ✓ উপলব্ধ | ✗ না |
| কী() পদ্ধতি | ✓ সমর্থন করে | ✗ সমর্থিত নয় |
| values() পদ্ধতি | ✓ সমর্থন করে | ✗ সমর্থিত নয় |
| entries() পদ্ধতি | ✓ সমর্থন করে | ✗ সমর্থিত নয় |
সীমিত পদ্ধতি
WeakMap সংজ্ঞায়িত পদ্ধতি প্রদান করে:
WeakMap গোপনীয় তথ্য
গোপনীয়তা সুরক্ষা
WeakMap গোপনীয়তার জন্য ডিজাইন করা হয়েছে: ভিতরে যা আছে তা অন্বেষণ করা যাবে না
Example
// উইকম্যাপ তৈরি করুন const myMap = new WeakMap(); // ব্যক্তিগত ক্ষেত্র সিমুলেশন শ্রেণীর ব্যবহারকারী { কন্সট্রাকটর(নাম) { myMap.set(এই, {গোপন:"লুকানো ডেটা"}); this.name = নাম; } getSecret() { ফেরত দিন myMap.get(this).secret; } } const user1 = নতুন ব্যবহারকারী ("জন"); গোপন = user1.getSecret();
Example Explained:
একটি দুর্বলম্যাপ পুনরাবৃত্তির অনুমতি দেয় না।
বাহ্যিক কোড উইকম্যাপে কোন বস্তু সংরক্ষণ করা হয় তা "আবিষ্কার" করতে পারে না।
গোপন পেতে, আপনার কনস্ট্রাক্টরে ব্যবহৃত এই রেফারেন্স প্রয়োজন।
বাইরের কোডের user1 এবং myMap-এ অ্যাক্সেস রয়েছে, কিন্তু myMap-এর এই রেফারেন্সে নয়, এবং আপনি getSecret() এর মাধ্যমে স্পষ্টভাবে প্রকাশ না করলে গোপন মানটি অ্যাক্সেসযোগ্য নয়।
গোপনীয়তা
WeakMap ইচ্ছাকৃতভাবে গোপনীয়তার জন্য ডিজাইন করা হয়েছে: আপনি একটি বস্তু কী সেট করতে, পেতে, পরীক্ষা করতে এবং মুছে ফেলতে পারেন, কিন্তু ভিতরে কী আছে তা আপনি পরীক্ষা করতে পারবেন না।
এটি জাভাস্ক্রিপ্ট ক্লাসে ব্যক্তিগত বৈশিষ্ট্য অনুকরণ করার জন্য একটি দুর্দান্ত সরঞ্জাম ছিল (ভাষায় ব্যক্তিগত ক্ষেত্র যুক্ত হওয়ার আগে)।
গোপনীয়তা
বাহ্যিক কোড থেকে ডেটা লুকানোর জন্য WeakMap ব্যবহার করা যেতে পারে
মেমরি ব্যবস্থাপনা
আবর্জনা সংগ্রহ স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়
স্বয়ংক্রিয় পরিস্কার
বস্তুগুলি সরানো হলে এন্ট্রি স্বয়ংক্রিয়ভাবে সরানো হয়
বিধিনিষেধ
কোনো পুনরাবৃত্তি, স্কেলিং এবং একাধিক পদ্ধতি নেই
WeakMap টিউটোরিয়াল
এই অনুশীলনটি জাভাস্ক্রিপ্ট উইকম্যাপের ধারণা সম্পর্কে আপনার বোঝার পরীক্ষা করে।
WeakMap সম্পর্কে নিচের কোন বিবৃতিটি সঠিক?
আরও জানুন
WeakMap সম্পর্কে আরো বিস্তারিত তথ্যের জন্য:
JavaScript Maps
মানচিত্র ভূমিকা এবং মৌলিক বিষয়
JavaScript Map Methods
মানচিত্র পদ্ধতি এবং বৈশিষ্ট্য
JavaScript Map Reference
সম্পূর্ণ মানচিত্র রেফারেন্স
JavaScript Sets
সেট এবং বেসিকের ভূমিকা
ব্রাউজার সমর্থন
WeakMap একটি ES6 বৈশিষ্ট্য।
জুন 2017 পর্যন্ত সমস্ত আধুনিক ব্রাউজারে ES6 সম্পূর্ণরূপে সমর্থিত:
| ব্রাউজার | সংস্করণ | মুক্তির তারিখ |
|---|---|---|
| Chrome | 51 | May 2016 |
| Edge | 15 | Apr 2017 |
| Firefox | 54 | Jun 2017 |
| Safari | 10 | Sep 2016 |
| Opera | 38 | Jun 2016 |