この翻訳は不完全です。英語から この記事を翻訳 してください。
これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
概要
コレクションとして弱保持されたobjectsを格納します。
構文
new WeakSet([iterable]);
引数
- iterable
- iterable object が渡された場合、すべての要素は、新しい
WeakSetに追加されます。nullはundefinedとして扱われます。
説明
WeakSetオブジェクトはコレクションオブジェクトです。WeakSet内のオブジェクトは一度だけ発生します。すなわち、WeakSetコレクション内で唯一の要素になります。
Setオブジェクトとの主な違いは下記の通りです。:
Setとの対比で、WeakSetsはオブジェクトのみのコレクションです。すべての型の任意の値のコレクションではありません。WeakSetはweakです。: コレクション内のオブジェクトへの参照は弱保持です。WeakSet内に格納されているオブジェクトへの参照が他にない場合、ガベージコレクションされます。これは、コレクション内に格納されている現在のオブジェクトのリストがないことを意味します。WeakSetsは列挙されません。
プロパティ
WeakSet.lengthlengthプロパティの値は0です。WeakSet.prototypeSetコンストラクタに対するプロトタイプを表します。すべてのWeakSetオブジェクトにプロパティを追加できます。
WeakSet インスタンス
すべてのWeakSet インスタンスはWeakSet.prototypeから継承します。
プロパティ
WeakSet.prototype.constructor- Returns the function that created an instance's prototype. This is the
WeakSetfunction by default.
Methods
WeakSet.prototype.add(value)- Appends a new object with the given value to the
WeakSetobject. WeakSet.prototype.delete(value)- Removes the element associated to the
value.WeakSet.prototype.has(value)will returnfalseafterwards. WeakSet.prototype.has(value)- Returns a boolean asserting whether an element is present with the given value in the
WeakSetobject or not. WeakSet.prototype.clear()Removes all elements from theWeakSetobject.
例
例: WeakSet オブジェクトを使う
var ws = new WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); // true
ws.has(foo); // false, foo has not been added to the set
ws.delete(window); // removes window from the set
ws.has(window); // false, window has been removed
ws.clear(); // empty the whole WeakSet
仕様
| 仕様 | ステータス | コメント |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) WeakSet の定義 |
標準 | 初期定義。 |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 36 | 34 (34) | 未サポート | 23 | 未サポート |
new WeakSet(iterable) |
38 | 34 (34) | 未サポート | 25 | 未サポート |
コンストラクタ 引数: new WeakSet(null) |
(有) | 37 (37) | ? | ? | ? |
コンストラクタ内のMonkeyパッチを適用したadd() |
(有) | 37 (37) | ? | ? | ? |
| 機能 | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| 基本サポート | 未サポート | 34.0 (34) | 未サポート | 未サポート | 未サポート |
new WeakMap(iterable) |
未サポート | 34.0 (34) | 未サポート | 未サポート | 未サポート |
コンストラクタ 引数: new WeakSet(null) |
? | (有) | ? | ? | ? |
コンストラクタ内のMonkeyパッチを適用したadd() |
? | (有) | ? | ? | ? |