Объект WeakSet - коллекция, элементами которой могут быть только объекты. Ссылки на эти объекты в WeakSet являются слабыми. Каждый объект может быть добавлен в WeakSet только один раз.
Синтаксис
new WeakSet([iterable]);
Параметры
- iterable
- При передаче итерируемого объекта, все его элементы будут добавлены в новый WeakSet.
Nullобрабатывается какundefined.
Описание
Объекты WeakSet представляют собой коллекции объектов. Каждый объект в WeakSet встречается только один раз, что обеспечивает его уникальность в рамках коллекции WeakSet.
Главным отличия от объекта Set:
- WeakSet содержит только объекты, тогда как Set - значения любого типа.
- Ссылки на объекты в WeakSet являются слабыми: если на объект, хранимый в WeakSet нет ни одной внешней ссылки, то сборщик мусора удалит этот объект. Также это означает, что WeakSet не итерируем, так как нет возможности получить список текущих хранимых в WeakSet объектов.
Свойства
WeakSet.length- Значение свойства
lengthвсегда равно 0. WeakSet.prototype- Представляет прототип конструктора Weak
Set. Позволяет добавлять свойства всем объектам типаWeakSet.
Экземпляры WeakSet
Все экземпляры класса WeakSet унаследованы от WeakSet.prototype.
Свойства
WeakSet.prototype.constructor- Возвращает функцию, создающую экземпляр прототипа. По умолчанию, это функция
WeakSet.
Методы
WeakSet.prototype.add(value)- Добавляет объект value в WeakSet.
WeakSet.prototype.delete(value)- Удаляет из WeakSet элемент value. После удаления вызов
WeakSet.prototype.has(value) возвращает false. WeakSet.prototype.has(value)- Определяет, содержит WeakSet объект value или нет, возвращая, соответственно, true или false.
WeakSet.prototype.clear()Удаляет все элементы из объекта WeakSet.
Примеры
Использование объекта WeakSet
var ws = new WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); // true
ws.has(foo); // false, foo не добавлен в WeakSet
ws.delete(window); // удаляет window из WeakSet
ws.has(window); // false, window был удалён
Спецификации
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'WeakSet' в этой спецификации. |
Стандарт | Изначальное определение. |
| ECMAScript (ECMA-262) Определение 'WeakSet' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
Update compatibility data on GitHub
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WeakSet | Chrome Полная поддержка 36 | Edge Полная поддержка 12 | Firefox Полная поддержка 34 | IE Нет поддержки Нет | Opera Полная поддержка 23 | Safari Полная поддержка 9 | WebView Android Полная поддержка 37 | Chrome Android Полная поддержка 36 | Firefox Android Полная поддержка 34 | Opera Android Полная поддержка 24 | Safari iOS Полная поддержка 9 | Samsung Internet Android Полная поддержка 3.0 | nodejs Полная поддержка 0.12 |
WeakSet() constructor | Chrome Полная поддержка 36 | Edge Полная поддержка 12 | Firefox Полная поддержка 34 | IE Нет поддержки Нет | Opera Полная поддержка 23 | Safari Полная поддержка 9 | WebView Android Полная поддержка 37 | Chrome Android Полная поддержка 36 | Firefox Android Полная поддержка 34 | Opera Android Полная поддержка 24 | Safari iOS Полная поддержка 9 | Samsung Internet Android Полная поддержка 3.0 | nodejs Полная поддержка 0.12 |
add | Chrome Полная поддержка 36 | Edge Полная поддержка 12 | Firefox Полная поддержка 34 | IE Нет поддержки Нет | Opera Полная поддержка 23 | Safari Полная поддержка 9 | WebView Android Полная поддержка 37 | Chrome Android Полная поддержка 36 | Firefox Android Полная поддержка 34 | Opera Android Полная поддержка 24 | Safari iOS Полная поддержка 9 | Samsung Internet Android Полная поддержка 3.0 | nodejs Полная поддержка 0.12 |
clear | Chrome Нет поддержки 36 — 41 | Edge Нет поддержки Нет | Firefox Нет поддержки 34 — 46 | IE Нет поддержки Нет | Opera Нет поддержки 23 — 28 | Safari Нет поддержки Нет | WebView Android Нет поддержки 37 — 41 | Chrome Android Нет поддержки 36 — 41 | Firefox Android Нет поддержки 34 — 46 | Opera Android Нет поддержки 24 — 28 | Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки 3.0 — 4.0 | nodejs Нет поддержки Нет |
delete | Chrome Полная поддержка 36 | Edge Полная поддержка 12 | Firefox Полная поддержка 34 | IE Нет поддержки Нет | Opera Полная поддержка 23 | Safari Полная поддержка 9 | WebView Android Полная поддержка 37 | Chrome Android Полная поддержка 36 | Firefox Android Полная поддержка 34 | Opera Android Полная поддержка 24 | Safari iOS Полная поддержка 9 | Samsung Internet Android Полная поддержка 3.0 | nodejs Полная поддержка 0.12 |
has | Chrome Полная поддержка 36 | Edge Полная поддержка 12 | Firefox Полная поддержка 34 | IE Нет поддержки Нет | Opera Полная поддержка 23 | Safari Полная поддержка 9 | WebView Android Полная поддержка 37 | Chrome Android Полная поддержка 36 | Firefox Android Полная поддержка 34 | Opera Android Полная поддержка 24 | Safari iOS Полная поддержка 9 | Samsung Internet Android Полная поддержка 3.0 | nodejs Полная поддержка 0.12 |
Легенда
- Полная поддержка
- Полная поддержка
- Нет поддержки
- Нет поддержки
- Нестандартная. Ожидается плохая кросс-браузерная поддержка.
- Нестандартная. Ожидается плохая кросс-браузерная поддержка.
- Устаревшая. Не следует использовать в новых веб-сайтах
- Устаревшая. Не следует использовать в новых веб-сайтах