JavaScriptでWeakSet要素確認!has()メソッド解説
投稿日 2025年02月07日 更新日 2025年02月07日
WeakSetの要素確認には`has()`メソッドを使用できます。`has()`メソッドは、指定したオブジェクトがWeakSetに含まれているかどうかを確認し、true/falseを返します。
WeakSet.has()メソッドの基本的な使い方
const weakSet = new WeakSet();
const obj = {};
weakSet.add(obj);
console.log(weakSet.has(obj)); // true
console.log(weakSet.has({})); // false
`has()`メソッドは引数にオブジェクトを受け取り、そのオブジェクトがWeakSetに存在する場合は`true`を、存在しない場合は`false`を返します。
注意点と制限事項
1. WeakSetにはオブジェクトのみを格納できます。プリミティブ値(数値、文字列など)は格納できません。
const weakSet = new WeakSet();
weakSet.add("文字列"); // TypeError: Invalid value used in weak set
2. WeakSetは弱い参照を持つため、格納したオブジェクトへの参照がなくなると自動的にガベージコレクションの対象となります。
let obj = { id: 1 };
const weakSet = new WeakSet([obj]);
console.log(weakSet.has(obj)); // true
obj = null; // objへの参照を削除
// この時点でWeakSetからobjが削除される可能性がある
実践的な使用例
WeakSetは、オブジェクトの一意性を管理する場合に便利です。
const visited = new WeakSet();
function processUser(user) {
if (visited.has(user)) {
console.log('このユーザーは既に処理済みです');
return;
}
visited.add(user);
console.log('ユーザーを処理しました');
}
const user = { name: 'John' };
processUser(user); // ユーザーを処理しました
processUser(user); // このユーザーは既に処理済みです
まとめ
- `has()`メソッドはWeakSetに特定のオブジェクトが存在するかを確認できます
- WeakSetにはオブジェクトのみを格納可能です
- メモリリークを防ぐために、オブジェクトへの参照が削除されると自動的にWeakSetからも削除されます
- オブジェクトの重複処理防止などに活用できます
WeakSetの`has()`メソッドを使用することで、効率的にオブジェクトの存在確認が可能になり、メモリ管理も最適化されます。
関連記事

新着記事
4
5
6
関連記事
4
5
6


60秒で完了