JavaScript WeakMap.set() — прив'язати дані до об'єкта
Метод set() кладе в WeakMap пару об'єкт → значення. Ключем може бути лише об'єкт.
Загальний опис
Спроба покласти ключем рядок чи число одразу кидає TypeError — і це не примха. Уся суть WeakMap у слабкому посиланні на ключ, а слабко посилатись можна тільки на об'єкт: примітиви збирач сміття не прибирає.
Звідси й головне застосування: прив'язати дані до DOM-елемента, не чіпаючи сам елемент. Елемент зникне зі сторінки — запис зникне сам.
автор: NagarD
- Нотатка
-
Ключ-примітив кидає
автор: NagarDTypeError.weakMap.set('key', 1)не працює за задумом, а не через недогляд.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| set | 36+ | 6+ | 8+ | 23+ | 12+ | 11+ |
| Переглядач | ||||
|---|---|---|---|---|
| set | 36+ | yes | yes | 8+ |
Приклади
+ запропонувати свій приклад у пісочниці
Стан віджета, прив'язаний до елемента й прибраний разом із ним.
HTML
<button>Кнопка зі станом</button>
JS
const state = new WeakMap();
function init(element) {
state.set(element, { clicks: 0, open: false });
}
const button = document.querySelector('button');
init(button);
button.addEventListener('click', () => {
state.get(button).clicks++;
console.log('Кліків:', state.get(button).clicks);
});
// ключем може бути ЛИШЕ об'єкт:
// state.set('key', 1); → TypeError
Коментарі
Коментарів ще немає — будьте першим!