JavaScript WeakMap

দুর্বল নোটের একটি মূল-মূল্যের সেট

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 (এবং এর মান) আবর্জনা সংগ্রহ করা হবে
{fname: "John", lname: "Doe"}
"secret"

কী অবজেক্ট হতে হবে

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 সংজ্ঞায়িত পদ্ধতি প্রদান করে:

new WeakMap()
একটি নতুন WeakMap অবজেক্ট তৈরি করে
get(key)
WeakMap-এ একটি কী-এর মান পায়
set(key, value)
WeakMap-এ একটি কী-এর মান সেট করে
delete(key)
কী দ্বারা নির্দিষ্ট করা উপাদানটি সরিয়ে দেয়
has(key)
কীটি উইকম্যাপে থাকলে সত্য ফেরত দেয়

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 যেকোনো ধরনের কী গ্রহণ করে
✗ ভুল! WeakMap-এর কীগুলি কেবলমাত্র অবজেক্ট হওয়া উচিত
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