ECMAScript 6には、Set
とWeakSet
の非常によく似たコレクションがあります。それらの違いは何ですか?
主な違いは、Set内のオブジェクトへの参照が強いのに対し、WeakSet内のオブジェクトへの参照は弱いことです。これは、WeakSet内のオブジェクトは、他に参照がない場合にガベージコレクションされる可能性があることを意味します。
その他の違い(またはむしろ副作用)は次のとおりです。
ウィークセットは、オブジェクトのコレクションを保持するjavascriptオブジェクトです。セットの性質上、同じオブジェクトの1つのオブジェクト参照のみがセット内で発生する可能性があります。ウィークセットは、次の点で通常のセットとは異なります。
int
、boolean
、string
など)は許可されません。WeakSet
以外にオブジェクトへの参照がない場合は常に、オブジェクトをガベージコレクションできることを意味します(つまり、JSエンジンは、参照が指しているオブジェクトのメモリを解放します)。let myWeakSet = new WeakSet();
let obj = {};
myWeakSet.add(obj);
console.log(myWeakSet.has(obj));
// break the last reference to the object we created earlier
obj = 5;
// false because no other references to the object which the weakset points to
// because weakset was the only object holding a reference it released it and got garbage collected
console.log(myWeakSet.has(obj));
セット:-セットは値のコレクションであり、各値は1回だけ発生する可能性があります。そして、主な方法は、追加、削除、持っている、クリア、サイズです。
WeakSet:- WeakSetオブジェクトを使用すると、一意のキーのコレクションを格納できます。“ WeakSet”キーをプリミティブ型にすることはできません。また、配列や別のセットで作成することもできません。 WeakSetの値はオブジェクト参照である必要があります。