Sobes.tech
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 және 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 объектілермен байланысты деректерді сақтау үшін пайдалы, ол жадтың ағуын болдырмайды.