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
Представляет прототип конструктора WeakSet. Позволяет добавлять свойства  всем объектам типа 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 Latest Draft (ECMA-262)
Определение 'WeakSet' в этой спецификации.
Черновик  

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
WeakSetChrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 34Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
addChrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 34Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
clear
УстаревшаяНестандартная
Chrome Нет поддержки 36 — 43Edge Нет поддержки НетFirefox Нет поддержки 34 — 46IE Нет поддержки НетOpera Нет поддержки 25 — 30Safari Нет поддержки НетWebView Android Нет поддержки 37 — 43Chrome Android Нет поддержки 36 — 43Firefox Android Нет поддержки 34 — 46Opera Android Нет поддержки 25 — 30Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 3.0 — 4.0nodejs Нет поддержки Нет
deleteChrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 34Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
hasChrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 34Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
prototypeChrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 34Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
new WeakSet(iterable)Chrome Полная поддержка 38Edge Полная поддержка 12Firefox Полная поддержка 34IE Нет поддержки НетOpera Полная поддержка 25Safari Полная поддержка 9WebView Android Полная поддержка 38Chrome Android Полная поддержка 38Firefox Android Полная поддержка 34Opera Android Полная поддержка 25Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12
new WeakSet(null)Chrome Полная поддержка 36Edge Полная поддержка 12Firefox Полная поддержка 37IE Нет поддержки НетOpera Полная поддержка 23Safari Полная поддержка 9WebView Android Полная поддержка 37Chrome Android Полная поддержка 36Firefox Android Полная поддержка 37Opera Android Полная поддержка 24Safari iOS Полная поддержка 9Samsung Internet Android Полная поддержка 3.0nodejs Полная поддержка 0.12

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах
 

Смотрите также