WeakSet
Объект 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(en-US)- Представляет прототип конструктора Weak
Set. Позволяет добавлять свойства всем объектам типаWeakSet.
Экземпляры WeakSet
Все экземпляры класса WeakSet унаследованы от WeakSet.prototype (en-US).
Свойства
{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Properties')}}
Методы
{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Methods')}}
Примеры
Использование объекта 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' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
BCD tables only load in the browser