ホームページ  >  記事  >  ウェブフロントエンド  >  ES6 の新しい WeakSet データ構造の詳細な紹介

ES6 の新しい WeakSet データ構造の詳細な紹介

巴扎黑
巴扎黑オリジナル
2017-08-11 11:05:591337ブラウズ

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));

OK を追加すると、結果は次のようになります:

tru​​e

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));

まずWeakSetにオブジェクトを追加し、次にオブジェクトをnullに設定し、以下でhasメソッドが判定されると、オブジェクトがWeakSetに存在しなくなったことを示す結果が表示されます。

false

3. 走査できません

内部要素オブジェクトへの弱い参照があり、いつでもガベージコレクションによって解放されるため、size や forEach などの走査メソッドはサポートされていません。

以上がES6 の新しい WeakSet データ構造の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。