JavaScript WeakSet — множина, що не тримає об'єкти в пам'яті


WeakSet — множина об'єктів зі слабкими посиланнями: вона не заважає збирачу сміття прибрати те, що в ній лежить.

автор: NagarD

Загальний опис

Той самий принцип, що й у WeakMap, але без значень — лише мітка: об'єкт або належить множині, або ні.

Типове застосування — позначити, що елемент уже оброблено, і не обробити його вдруге. Коли елемент зникне зі сторінки, мітка зникне сама.

Як і WeakMap, ця множина не перебирається й не має size.

автор: NagarD

Синтаксис

const ws = new WeakSet();

методи

Метод Опис
add Додає об'єкт.
has Перевіряє наявність об'єкта.
delete Видаляє об'єкт.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
WeakSet 36+ 34+ 9+ 23+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
WeakSet 36+ yes yes 9+

Приклади

+ запропонувати свій приклад у пісочниці

Мітка «вже оброблено», яка зникає разом з елементом.

HTML

<div class="widget">Віджет 1</div>
<div class="widget">Віджет 2</div>

JS

function handler() {
    console.log('клік по віджету');
}

const initialized = new WeakSet();

function setup(element) {
    // другий раз не ініціалізуємо
    if (initialized.has(element)) {
        console.log('Уже налаштований — пропускаємо');
        return;
    }

    element.addEventListener('click', handler);
    initialized.add(element);
}

document.querySelectorAll('.widget').forEach(setup);
setup(document.querySelector('.widget')); // проігнорується
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід