JavaScript WeakSet

பலவீனமான குறிப்புகளின் தொகுப்பு

WeakSet பொருள்

பலவீனமான குறிப்புகள்

JavaScript WeakSet

ஒரு JavaScript WeakSet என்பது மதிப்புகளின் தொகுப்பாகும், அங்கு மதிப்புகள் பொருள்களாக இருக்க வேண்டும்.

ஒரு WeakSet அதன் மதிப்புகளுக்கு பலவீனமான குறிப்புகளை வைத்திருக்கிறது.

மதிப்பு சேர்த்தல்

let mySet = new WeakSet();
let myObj = {fname:"John", lname:"Doe"};
mySet.add(myObj);

மதிப்பு சோதனை

let answer = mySet.has(myObj);
// true அல்லது false தரும்

மதிப்பு நீக்குதல்

mySet.delete(myObj);
// பொருள் நீக்கப்படும்

எடுத்துக்காட்டுகள்

எடுத்துக்காட்டு 1: WeakSet உருவாக்குதல் மற்றும் சோதனை

// WeakSet உருவாக்கு
let mySet = new WeakSet();

// பொருள் உருவாக்கு
let myObj = {fname:"John", lname:"Doe"};

// பொருளைச் சேர்
mySet.add(myObj);

// mySet இல் myObj உள்ளதா?
let answer = mySet.has(myObj);

எடுத்துக்காட்டு 2: WeakSet இலிருந்து நீக்குதல்

// WeakSet உருவாக்கு
let mySet = new WeakSet();

// பொருள் உருவாக்கு
let myObj = {fname:"John", lname:"Doe"};

// பொருளைச் சேர்
mySet.add(myObj);

// பொருளை நீக்கு
mySet.delete(myObj);

// mySet இல் myObj உள்ளதா?
let answer = mySet.has(myObj);

கழிவு சேகரிப்பு

JavaScript கழிவு சேகரிப்பு என்று அழைக்கப்படும் நினைவக மேலாண்மை வழிமுறையைப் பயன்படுத்துகிறது.

முதன்மை செயல்பாடுகள்:

நினைவக வளங்களின் திறமையான பயன்பாட்டை உறுதிப்படுத்துதல்
பயன்பாட்டில் இல்லாத மாறிகள் ஆக்கிரமித்த நினைவகத்தை மீட்டெடுத்தல்
நினைவக கசிவுகளைத் தடுத்தல்
Object
Object
குறிப்புகள் இல்லாத பொருட்கள் கழிவு சேகரிக்கப்படுகின்றன

பலவீனமான குறிப்புகள்

வழக்கமான Set போலல்லாமல், ஒரு WeakSet அதன் மதிப்புகள் கழிவு சேகரிக்கப்படுவதைத் தடுக்காது.

ஒரு மதிப்பு (ஒரு பொருள்) ஒரு நிரலில் குறிப்புகள் இல்லையென்றால், அது கழிவு சேகரிப்புக்கு தகுதியானதாகிறது.

மதிப்பு கழிவு சேகரிக்கப்படும்போது, அது WeakSet இலிருந்து அகற்றப்படும்.

எடுத்துக்காட்டு

// WeakSet உருவாக்கு
let mySet = new WeakSet();

// பொருள் உருவாக்கு
let myObj = {fname:"John", lname:"Doe"};

// பொருளைச் சேர்
mySet.add(myObj);

// நினைவகத்திலிருந்து பொருளை அகற்று
myObj = null;

// இப்போது mySet இல் உள்ள myObj கழிவு சேகரிக்கப்படும்

மதிப்புகள் பொருள்களாக இருக்க வேண்டும்

முதன்மை மதிப்புகள் WeakSet இல் மதிப்புகளாக இருக்க முடியாது.

மதிப்புகள் பொருள்களாக இருக்க வேண்டும்.

தவறானது:

let weakSet = new WeakSet();
weakSet.add(42);          // பிழை!
weakSet.add("Hello");     // பிழை!
weakSet.add(true);        // பிழை!

சரியானது:

let weakSet = new WeakSet();
weakSet.add({name: "John"});     // சரி!
weakSet.add([1, 2, 3]);          // சரி!
weakSet.add(new Date());         // சரி!

இந்த கட்டுப்பாடு கழிவு சேகரிப்பு வழிமுறையுடன் தொடர்புடையது; முதன்மை மதிப்புகள் பொருள்களைப் போல கழிவு சேகரிக்கப்படுவதில்லை.

பொருள்களைக் கண்காணித்தல்

ஒரு WeakSet என்பது ஒரு Set போன்றது, ஆனால் அது பொருள்களை மட்டுமே சேமிக்கிறது, மேலும் அவற்றை பலவீனமாக வைத்திருக்கிறது. ஒரு பொருளுக்கு வேறு குறிப்புகள் இல்லையென்றால், அது தானாகவே கழிவு சேகரிக்கப்படும்.

இது கூடுதல் தரவை (எண்ணிக்கைகள் போன்ற) சேமிக்காமல் பொருள்களைக் கண்காணிக்க பயனுள்ளதாக இருக்கிறது.

வருகையாளர்களைக் கண்காணித்தல்:

let text = "";

// நபர்களைக் கண்காணிக்க WeakSet உருவாக்கு
const persons = new WeakSet();

// வருகையாளர் பொருள்கள்
const John = {name:"John", age:40};
const Paul = {name:"Paul", age:41};
const Ringo = {name:"Ringo", age:42};
const George = {name:"George", age:43};

// வருகைகளைக் கண்காணி
track(Paul);
track(Ringo);
track(Paul);

// வருகையாளர்களைக் கண்காணிக்க செயல்பாடு
function track(visitor) {
  if (persons.has(visitor)) {
    text += visitor.name + " is visiting again.
"; } else { persons.add(visitor); text += visitor.name + ", age" + visitor.age +", is visiting for the first time
"; } }

📌 குறிப்பு:

நீங்கள் வருகைகளையும் எண்ணிக்கையும் வைத்திருக்க விரும்பினால்:

WeakMap ஐப் பயன்படுத்த முயற்சிக்கவும்.

தானியங்கி சுத்திகரிப்பு

நீங்கள் ஒரு வருகையாளர் பொருளுக்கான அனைத்து குறிப்புகளையும் அகற்றினால்:

வருகையாளர்களைக் கண்காணித்தல்:

John = null;

// John க்கான உள்ளீடு இப்போது WeakMap (persons) இலிருந்து அகற்றப்படும்

🧹 தானியங்கி சுத்திகரிப்பு:

WeakSet மெமரி மேலாண்மையை எளிதாக்குகிறது. நீங்கள் பொருள்களை நீக்க வேண்டியதில்லை - அவை தானாகவே கழிவு சேகரிக்கப்படும்.

மறு செய்கை செய்ய முடியாதது

WeakSets மறு செய்கை செய்ய முடியாதவை.

நீங்கள் for சுழற்சிகள், forEach(), அல்லது values() மூலம் மதிப்புகள் வழியாக மறு செய்கை செய்ய முடியாது.

நீங்கள் அளவை அணுக முடியாது. WeakSets க்கு size பண்பு இல்லை.

செயல்பாடு Set WeakSet
மறு செய்கை (for...of) ✓ ஆதரிக்கிறது ✗ ஆதரிக்காது
forEach() முறை ✓ ஆதரிக்கிறது ✗ ஆதரிக்காது
size பண்பு ✓ ஆதரிக்கிறது ✗ ஆதரிக்காது
ஸ்ப்ரெட் ஆபரேட்டர் (...) ✓ ஆதரிக்கிறது ✗ ஆதரிக்காது

வரையறுக்கப்பட்ட முறைகள்

ஒரு WeakSet குறைந்தபட்சம், நினைவக பாதுகாப்பானது மற்றும் தனிப்பட்ட மற்றும் திறமையாக பொருள்களைக் கண்காணிக்க கட்டமைக்கப்பட்டது.

WeakSet வரையறுக்கப்பட்ட முறைகளை வழங்குகிறது:

new WeakSet()

புதிய WeakSet பொருளை உருவாக்குகிறது

add(object)

WeakSet க்கு ஒரு பொருளைச் சேர்க்கிறது

delete(object)

WeakSet பொருளை அகற்றுகிறது

has(object)

ஒரு பொருள் WeakSet இல் இருந்தால் true தரும்

🚫 WeakSet இல் இல்லை:

size பண்பு
ஸ்ப்ரெட் ஆபரேட்டர் (...)
clear() முறை
தர்க்க முறைகள் (union, difference, intersection)
மறு செய்கை முறைகள் (forEach, keys, values, entries)

மேலே உள்ளவை வடிவமைப்பு மூலம்: பொருள்கள் கழிவு சேகரிப்பில் மறைந்துவிடக்கூடும், அவற்றை மறு செய்கை செய்வது அல்லது எண்ணுவது அர்த்தமற்றது.

WeakSet பயிற்சி

JavaScript WeakSet இன் கருத்துகளைப் புரிந்துகொள்வதை இந்த பயிற்சி சோதிக்கிறது.

பின்வரும் கூற்றுகளில் எது WeakSet பற்றி சரியானது?

WeakSet இல் எந்த மதிப்புகளும் இருக்கலாம்
✗ தவறு! WeakSet இல் பொருள்கள் மட்டுமே இருக்க முடியும், முதன்மை மதிப்புகள் அல்ல
WeakSet பலவீனமான குறிப்புகளை வைத்திருக்கிறது
✓ சரி! WeakSet அதன் மதிப்புகளுக்கு பலவீனமான குறிப்புகளை வைத்திருக்கிறது, அதனால் அவை கழிவு சேகரிக்கப்படலாம்
WeakSet க்கு size பண்பு உள்ளது
✗ தவறு! WeakSet க்கு size பண்பு இல்லை
WeakSet இல் forEach() முறை உள்ளது
✗ தவறு! WeakSet மறு செய்கை செய்ய முடியாதது, forEach() இல்லை

மேலும் அறிய

WeakSet பற்றிய மேலும் விரிவான தகவலுக்கு:

JavaScript Sets

Sets அறிமுகம் மற்றும் அடிப்படைகள்

JavaScript Set Methods

அடிப்படை Set முறைகள்

JavaScript Set Logic

Set தர்க்க முறைகள்

JavaScript Set Reference

முழுமையான Set குறிப்பு

🗺️ JavaScript Maps:

WeakSet போன்றே, WeakMap களும் உள்ளன. அவை விசை-மதிப்பு ஜோடிகளை பலவீனமான குறிப்புகளுடன் சேமிக்கின்றன.

உலாவி ஆதரவு

WeakSet ஒரு ES6 அம்சமாகும்.

ES6 ஜூன் 2017 முதல் அனைத்து நவீன உலாவிகளிலும் முழுமையாக ஆதரிக்கப்படுகிறது:

உலாவி பதிப்பு வெளியீட்டு தேதி
Chrome 51 May 2016
Edge 15 Apr 2017
Firefox 54 Jun 2017
Safari 10 Sep 2016
Opera 38 Jun 2016