JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのWeakSet.has()メソッドの使い方をわかりやすく解説

WeakSet.has()メソッドとは

WeakSet.has()は、JavaScriptに標準で組み込まれているメソッドの一つで、指定したオブジェクトがWeakSet内に存在するかどうかを調べ、その結果を真偽値(boolean)として返します。そもそもWeakSetとは、オブジェクトを「弱い参照」としてコレクションに格納できる特殊なオブジェクトであり、他の場所から参照されなくなったオブジェクトはガベージコレクションによって自動的に回収されるという特徴を持っています。

構文

weakSet.has(obj);

引数

上記のコードのように、WeakSet.has()は引数「obj」を1つ受け取ります。このメソッドは、渡されたオブジェクトが対象のWeakSetに含まれているかどうかをチェックします。

戻り値

WeakSet.has()メソッドは、指定された値がWeakSet内に存在するかどうかに応じて真偽値を返します。値が存在していればtrueが返され、存在しなければfalseが返されます。

サンプルコード1:オブジェクトが存在する場合

次の例では、WeakSet.has()を使って、あらかじめ作成したオブジェクト(newObj)がWeakSet内に存在するかどうかを確認しています。このオブジェクトはadd()メソッドで事前に追加されているため、実行結果はtrueとなります。

<html>
<body>
<script type="text/javascript">
    const object = new WeakSet();
    const newObj = {
      'prop': 1
    };
    object.add(newObj);
    document.write(object.has(newObj)); // true を返す
</script>
</body>
</html>

出力結果

true

サンプルコード2:オブジェクトが存在しない場合

続いて、オブジェクトがWeakSetに存在しないケースを見てみましょう。次の例では、add()メソッドによる追加を行っていないため、newObjはWeakSet内に存在せず、実行結果はfalseとなります。

<html>
<body>
<script type="text/javascript">
    const object = new WeakSet();
    const newObj = {
      'prop1': 1
    };
    document.write(object.has(newObj)); // false を返す
</script>
</body>
</html>

出力結果

false

補足:WeakSetを使う際のポイント

  • WeakSetにはオブジェクトのみ格納でき、文字列や数値などのプリミティブ値は保存できません。
  • 弱い参照で保持されるため、外部からの参照がなくなったオブジェクトは自動的にガベージコレクションの対象になります。
  • has()メソッドは存在確認専用であり、WeakSet自体は反復処理(イテレーション)ができない点にも注意が必要です。
  1. JavaScriptのObject.assign()メソッドとは?使い方と注意点を解説

    Object.assign()メソッドは、1つ以上のソースオブジェクトからターゲットオブジェクトへ、列挙可能な独自プロパティの値をすべてコピーするためのメソッドです。戻り値として、コピー先となったターゲットオブジェクトが返されます。 基本的な使い方 const targetObj = { a: 1, b: 2 }; const sourceObj = { b: 4, c: 5 }; const returnedTarget = Object.assign(targetObj, sourceObj); console.log(targetObj); console.log(returnedTar

  2. JavaScriptのMapオブジェクトとは?特徴と基本的な使い方を解説

    JavaScriptのMapオブジェクトとは MDNドキュメントによると、Mapオブジェクトは「キーと値のペア」を保持し、キーが挿入された元の順序を記憶するデータ構造です。任意の値(オブジェクトとプリミティブ値の両方)を、キーまたは値として自由に使用できます。 ここで特に重要なポイントは、オブジェクトそのものもMapのキーとして使えるという点です。これは通常のJavaScriptオブジェクトでは実現できない動作です。一般的なJSオブジェクトでは、キーとして使用できるのはプリミティブ値(文字列や数値など)のみに限られます。 さらに、Mapが特定の場面で役立つもう一つの大きな特徴は、反復可能(it