JavaScriptのWeakSetに要素を追加する方法について解説します。具体的には`add()`メソッドの使い方をサンプルコードとともに紹介します。

WeakSetへの要素追加方法

WeakSetに要素を追加するには`add()`メソッドを使用します。

const weakSet = new WeakSet();
const obj = { name: "example" };

// add()メソッドで要素を追加
weakSet.add(obj);

基本的な使い方

// WeakSetのインスタンスを作成
const weakSet = new WeakSet();

// オブジェクトを作成
const obj1 = { id: 1 };
const obj2 = { id: 2 };

// add()メソッドで要素を追加
weakSet.add(obj1);
weakSet.add(obj2);

// 要素が存在するか確認
console.log(weakSet.has(obj1)); // true
console.log(weakSet.has(obj2)); // true

注意点

1. WeakSetにはオブジェクトのみ追加できます。プリミティブ値(数値、文字列など)は追加できません。

const weakSet = new WeakSet();

// エラーになる例
weakSet.add(123); // TypeError
weakSet.add("text"); // TypeError

// 正しい例
weakSet.add({ value: 123 }); // OK

2. 同じオブジェクトを複数回追加しても、重複は排除されます。

const weakSet = new WeakSet();
const obj = { id: 1 };

weakSet.add(obj);
weakSet.add(obj); // 重複は無視される

console.log(weakSet.has(obj)); // true(1つだけ存在)

メソッドチェーン

`add()`メソッドは、メソッドチェーンを使用して複数の要素を連続して追加できます。

const weakSet = new WeakSet();
const obj1 = { id: 1 };
const obj2 = { id: 2 };

// メソッドチェーンで複数要素を追加
weakSet.add(obj1).add(obj2);

よくあるエラーと解決方法

1. プリミティブ値を追加しようとした場合:

// エラーの例
const weakSet = new WeakSet();
try {
  weakSet.add(42);
} catch (e) {
  console.error("プリミティブ値は追加できません");
}

// 解決方法
weakSet.add({ value: 42 }); // オブジェクトとしてラップする

2. nullやundefinedを追加しようとした場合:

// エラーの例
const weakSet = new WeakSet();
try {
  weakSet.add(null);
} catch (e) {
  console.error("nullは追加できません");
}

// 解決方法
const nullObject = { value: null };
weakSet.add(nullObject); // オブジェクトとしてラップする

WeakSetは、オブジェクトへの弱い参照を保持するためのコレクションとして使用されます。メモリリークを防ぐためのガベージコレクションの対象となるため、特定のユースケースで有用です。

以上で、JavaScriptのWeakSetへの要素追加方法について説明を終わります。WeakSetの特性を理解し、適切な使用方法を選択することが重要です。