Middle+
32
Map пен WeakMap арасындағы айырмашылық неде?
Сұралған компаниялар
BetBoom
AI-дан жауап
sobes.tech AI
Map және WeakMap — бұл JavaScript-те кілт-мән коллекциялары, бірақ олардың маңызды айырмашылықтары бар:
-
Кілттер:
- Map-те кілттер ретінде кез келген мәндер, соның ішінде примитивтер де болуы мүмкін.
- WeakMap-те кілттер объектілер болуы керек (примитивтер емес).
-
Қоқыс жинау:
- Map кілттер мен мәндерге күшті сілтемелерді сақтайды, сондықтан кілт ретінде пайдаланылатын объектілер Map-те болғанша жойылмайды.
- WeakMap әлсіз сілтемелерді сақтайды, яғни егер объект-кілт басқа жерде қолданылмаса, ол қоқыс жинаушы арқылы жойылуы мүмкін, және сәйкес жазба автоматты түрде WeakMap-тан өшіріледі.
-
Итерация:
- Map итерациялау әдістерін қолдайды (мысалы,
map.forEach,map.keys(),map.values()). - WeakMap итерацияны қолдамайды, себебі оның мазмұны қоқыс жинаушы кез келген уақытта өзгеруі мүмкін.
- Map итерациялау әдістерін қолдайды (мысалы,
Map және WeakMap қолдану мысалы:
const map = new Map();
const weakMap = new WeakMap();
const objKey = { id: 1 };
map.set(objKey, 'Map-те мән');
weakMap.set(objKey, 'WeakMap-те мән');
console.log(map.get(objKey)); // 'Map-те мән'
console.log(weakMap.get(objKey)); // 'WeakMap-те мән'
// Егер objKey басқа жерде қолданылмаса, WeakMap-те жазба автоматты түрде жойылуы мүмкін.
```\nWeakMap объектілермен байланысты деректерді сақтау үшін пайдалы, ол жадтың ағуын болдырмайды.