JavaScript WeakSet — множина, що не тримає об'єкти в пам'яті
WeakSet — множина об'єктів зі слабкими посиланнями: вона не заважає збирачу сміття прибрати те, що в ній лежить.
Загальний опис
Той самий принцип, що й у WeakMap, але без значень — лише мітка: об'єкт або належить множині, або ні.
Типове застосування — позначити, що елемент уже оброблено, і не обробити його вдруге. Коли елемент зникне зі сторінки, мітка зникне сама.
Як і WeakMap, ця множина не перебирається й не має size.
Синтаксис
const ws = new WeakSet();
методи
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| WeakSet | 36+ | 34+ | 9+ | 23+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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')); // проігнорується
Коментарі
Коментарів ще немає — будьте першим!