JavaScriptのWeakSetとは?特徴と主要メソッド、サンプルコードをわかりやすく解説
JavaScriptのWeakSet(ウィークセット)は、オブジェクトを格納するためのコレクションです。Setと同様に、同じオブジェクトを重複して保存することはできません。
WeakSetの主な特徴
- 弱い参照で保持する:WeakSet内のオブジェクトへの参照が他に存在しなくなると、ガベージコレクションによって自動的にメモリから解放されます。そのため、メモリリークを防ぎたい場面で役立ちます。
- オブジェクトのみ格納可能:数値や文字列などのプリミティブ値は追加できません。
- 列挙できない:Setのような
sizeプロパティや反復処理の仕組みを持たず、格納されている要素の一覧を取得することはできません。
WeakSetの主なメソッド
| メソッド | 説明 |
|---|---|
| add(obj) | 新しいオブジェクトをWeakSetに追加します。 |
| delete(obj) | 指定したオブジェクトをWeakSetから削除します。 |
| has(obj) | WeakSetに指定したオブジェクトが含まれている場合はtrue、含まれていない場合はfalseを返します。 |
以下は、JavaScriptでWeakSetを使用したサンプルコードです。
サンプルコード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result {
font-size: 18px;
font-weight: 500;
color: red;
}
</style>
</head>
<body>
<h1>JavaScript WeakSet</h1>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>
CLICK the above button to add obj1 and obj2 to the WeakSet object
</h3>
<script>
let resultEle = document.querySelector(".result");
let weakObj = new WeakSet();
let obj1 = { a: 22 };
let obj2 = { b: 44 };
document.querySelector(".Btn").addEventListener("click", () => {
weakObj.add(obj1);
resultEle.innerHTML += "Obj1 added to weakset <br>";
weakObj.add(obj2);
resultEle.innerHTML += " Obj2 added to weakset <br>";
});
</script>
</body>
</html>実行結果
ページを開いた直後の表示は次のようになります。

「CLICK HERE」ボタンをクリックすると、obj1とobj2が順番にWeakSetへ追加され、画面に結果が出力されます。

-
JavaScriptのPromise(プロミス)とは?非同期処理の基本と使い方を解説
JavaScriptのPromise(プロミス)は、作成された時点ではまだ値が確定していない非同期処理を扱うためのオブジェクトです。APIリクエストやファイルの読み込みなど、完了まで時間がかかる処理について、「いずれ結果を受け取る」という約束を表現します。Promiseは、以下の3つの状態を持ちます。pending(保留中):処理がまだ完了しておらず、成功も失敗も確定していない初期状態fulfilled(履行済み):処理が正常に完了し、結果の値が利用できる状態rejected(拒否済み):処理が失敗し、エラーの理由が利用できる状態一度fulfilledまたはrejectedに遷移したPromi
-
JavaScriptのWeakSetとは?特徴と主要メソッド、サンプルコードをわかりやすく解説
JavaScriptのWeakSet(ウィークセット)は、オブジェクトを格納するためのコレクションです。Setと同様に、同じオブジェクトを重複して保存することはできません。WeakSetの主な特徴弱い参照で保持する:WeakSet内のオブジェクトへの参照が他に存在しなくなると、ガベージコレクションによって自動的にメモリから解放されます。そのため、メモリリークを防ぎたい場面で役立ちます。オブジェクトのみ格納可能:数値や文字列などのプリミティブ値は追加できません。列挙できない:Setのようなsizeプロパティや反復処理の仕組みを持たず、格納されている要素の一覧を取得することはできません。WeakS