WeakSet は、弱参照によって要素を格納することになっています。つまり、オブジェクトが他から参照されていない場合は、WeakSet から削除する必要があります。
私は次のテストを書きました:
var weakset = new WeakSet(),
numbers = [1, 2, 3];
weakset.add(numbers);
weakset.add({name: "Charlie"});
console.log(weakset);
numbers = undefined;
console.log(weakset);
私の[1, 2, 3]
配列は何からも参照されていませんが、WeakSet から削除されていません。コンソールに次のように出力されます。
WeakSet {[1, 2, 3], Object {name: "Charlie"}}
WeakSet {[1, 2, 3], Object {name: "Charlie"}}
何故ですか?
さらに、もう 1 つ質問があります。次のように、オブジェクトを WeakSets に直接追加するポイントは何ですか。
weakset.add({name: "Charlie"});
それらのトレーサーの不具合ですか、それとも何か不足していますか?
最後に、WeakSet を繰り返し処理することも、現在のサイズを取得することもできない場合、WeakSet の実際の使用法は何ですか?