Що таке WeakMap, WeakSet, WeakRef?
Що таке WeakMap, WeakSet, WeakRef?
Вступ
У JavaScript існують спеціальні колекції, які дозволяють зберігати об'єкти без запобігання їх збору сміття. До таких колекцій належать WeakMap, WeakSet та WeakRef. У цьому розділі ми розглянемо кожну з цих структур даних.
WeakMap
WeakMap — це колекція пар "ключ-значення", де ключами можуть бути лише об'єкти. Основні характеристики:
- Слабке посилання на ключі: Якщо на ключ більше немає посилань, він може бути зібраний сміттям.
- Не перераховуються: Немає способу перерахувати ключі або значення в
WeakMap.
Приклад використання WeakMap
let weakmap = new WeakMap();
let obj = {};
weakmap.set(obj, 'значення');
console.log(weakmap.get(obj)); // 'значення'WeakSet
WeakSet — це колекція, що дозволяє зберігати лише об'єкти. Основні характеристики:
- Слабке посилання на об'єкти: Якщо на об'єкт більше немає посилань, він може бути зібраний сміттям.
- Не перераховуються: Немає способу перерахувати об'єкти в
WeakSet.
Приклад використання WeakSet
let weakset = new WeakSet();
let obj = {};
weakset.add(obj);
console.log(weakset.has(obj)); // trueWeakRef
WeakRef — це об'єкт, який дозволяє створити слабке посилання на інший об'єкт. Основні характеристики:
- Слабке посилання: Якщо на об'єкт більше немає сильних посилань, він може бути зібраний сміттям.
- Отримання значення: Для отримання значення використовується метод
deref().
Приклад використання WeakRef
let obj = {};
let weakref = new WeakRef(obj);
console.log(weakref.deref()); // { }
obj = null; // Тепер об'єкт може бути зібраний сміттямВисновок
WeakMap, WeakSet та WeakRef є потужними інструментами для управління пам'яттю в JavaScript. Вони дозволяють уникнути утворення циклічних посилань і допомагають у збиранні сміття.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.