Skip to main content
Практика завдань

Що таке WeakMap, WeakSet, WeakRef?

Що таке WeakMap, WeakSet, WeakRef?

Вступ

У JavaScript існують спеціальні колекції, які дозволяють зберігати об'єкти без запобігання їх збору сміття. До таких колекцій належать WeakMap, WeakSet та WeakRef. У цьому розділі ми розглянемо кожну з цих структур даних.

WeakMap

WeakMap — це колекція пар "ключ-значення", де ключами можуть бути лише об'єкти. Основні характеристики:

  • Слабке посилання на ключі: Якщо на ключ більше немає посилань, він може бути зібраний сміттям.
  • Не перераховуються: Немає способу перерахувати ключі або значення в WeakMap.

Приклад використання WeakMap

javascript
let weakmap = new WeakMap(); let obj = {}; weakmap.set(obj, 'значення'); console.log(weakmap.get(obj)); // 'значення'

WeakSet

WeakSet — це колекція, що дозволяє зберігати лише об'єкти. Основні характеристики:

  • Слабке посилання на об'єкти: Якщо на об'єкт більше немає посилань, він може бути зібраний сміттям.
  • Не перераховуються: Немає способу перерахувати об'єкти в WeakSet.

Приклад використання WeakSet

javascript
let weakset = new WeakSet(); let obj = {}; weakset.add(obj); console.log(weakset.has(obj)); // true

WeakRef

WeakRef — це об'єкт, який дозволяє створити слабке посилання на інший об'єкт. Основні характеристики:

  • Слабке посилання: Якщо на об'єкт більше немає сильних посилань, він може бути зібраний сміттям.
  • Отримання значення: Для отримання значення використовується метод deref().

Приклад використання WeakRef

javascript
let obj = {}; let weakref = new WeakRef(obj); console.log(weakref.deref()); // { } obj = null; // Тепер об'єкт може бути зібраний сміттям

Висновок

WeakMap, WeakSet та WeakRef є потужними інструментами для управління пам'яттю в JavaScript. Вони дозволяють уникнути утворення циклічних посилань і допомагають у збиранні сміття.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань