JavaScript WeakMap.set() — прив'язати дані до об'єкта


Метод set() кладе в WeakMap пару об'єкт → значення. Ключем може бути лише об'єкт.

автор: NagarD

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

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

Звідси й головне застосування: прив'язати дані до DOM-елемента, не чіпаючи сам елемент. Елемент зникне зі сторінки — запис зникне сам.

автор: NagarD

Нотатка

Ключ-примітив кидає TypeError. weakMap.set('key', 1) не працює за задумом, а не через недогляд.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
set 36+ 6+ 8+ 23+ 12+ 11+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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