WeakSet は Set に似ていますが、反復しない要素を含むコレクションでもあります。それらの違いは、WeakSet の要素はオブジェクトである必要があり、他の型であることはできないことです。次に、この記事では ES6 の新しいデータ構造 WeakSet の使い方を詳しく紹介します。興味のある方はぜひ一緒にご覧ください。WeakSet は Set と似ていますが、その違いは次のとおりです。これらの違いは、WeakSet の要素は Object でなければならず、他の型であってはいけないということです。
特徴: 1. 要素はオブジェクトである必要があります。
タイプ番号の要素を追加します。
const ws = new WeakSet() ws.add(1)
TypeError: 弱いセットで使用された値が無効です
オブジェクトを追加します。
const ws = new WeakSet() var a = {p1:'1', p2:'2'} ws.add(a) console.log(ws.has(a));
true
WeakSet の has メソッドを使用して、要素がすでにセット内にあるかどうかを判断できます。
要素を保存する必要がない場合は、delete メソッドを使用して要素を削除できます。
2. 弱い参照はガベージコレクションにカウントされませんWeakSet に追加された要素オブジェクトの場合、WeakSet は要素オブジェクトの参照カウントを 1 増やしません。WeakSet に追加された要素オブジェクトの場合、要素オブジェクトがWeakSet 以外のオブジェクトから参照されていない場合は、ガベージ コレクションによって WeakSet 内の要素オブジェクトがメモリ リークなく自動的に解放されます。
この機能により、マップよりもパフォーマンスが高く、非順次、非反復、一時的なストレージを必要とするシナリオに使用できます。
const ws = new WeakSet() var a = {p1:'1', p2:'2'} ws.add(a) a = null console.log(ws.has(a));
false
3. 走査できません内部要素オブジェクトへの弱い参照があり、いつでもガベージコレクションによって解放されるため、size や forEach などの走査メソッドはサポートされていません。
以上がES6 の新しい WeakSet データ構造の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。