Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年9月.
* Some parts of this feature may have varying levels of support.
WeakSet オブジェクトは、コレクションに弱く参照されたオブジェクトを格納することができます。
WeakSet オブジェクトはコレクションオブジェクトです。 Set と同様に、 WeakSet 内の各オブジェクトは一度だけ存在します。すなわち、 WeakSet コレクション内で固有になります。
Set オブジェクトとの主な違いは下記の通りです。
WeakSet はオブジェクトのみのコレクションです。 Set のように、任意の型の自由な値を入れることはできません。
WeakSet は弱い参照です。コレクション内のオブジェクトへの弱い参照で保持されます。 WeakSet 内に格納されているオブジェクトへの参照が他にない場合、ガベージコレクションにより削除されます。
メモ: これは、このコレクションに格納されているオブジェクトの現在のリストが存在しないことを意味します。 WeakSets は列挙可能ではありません。
自分自身を再帰的に呼び出す関数は、どのオブジェクトが処理済みであるかを追跡することで、循環したデータ構造を防ぐ必要があります。
WeakSet はこの目的に理想的です。
ここで、 WeakSet は最初の実行時に作成され、その後の関数呼び出しのたびに (内部の _refs 引数を使用して) 渡されます。
オブジェクトの数や探索順序は重要ではないので、オブジェクトの参照を追跡するには WeakSet のほうが Set よりも、特に巨大な数のオブジェクトを処理する場合にはよりふさわしい (そして性能もよい) ものです。
新しいWeakSetオブジェクトを生成します。
value を WeakSet オブジェクトに追加します。
WeakSet.prototype.delete(value)value を WeakSet オブジェクトから削除します。削除後、 WeakSet.prototype.has(value) は false を返します。
WeakSet.prototype.has(value)value が WeakSet オブジェクト内の要素に含まれているかどうかを示す論理値を返します。
foo !== bar であることに注意してください。これらは似たオブジェクトですが、まったく同じオブジェクトではありません。したがって、両方のオブジェクトが set に追加されます。
| ECMAScript® 2027 Language Specification # sec-weakset-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2024年7月28日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.