むかしむかし、JavaScript の神秘的な国では、WeakMap と WeakSet という 2 つの特別なデータ構造が影で静かに存在していました。彼らは、いとこであるマップやセットほど派手ではありませんでしたが、記憶管理という魔法の領域においてかけがえのない存在にする秘密の力を持っていました。
デヴという名前の賢い老魔法使いがいて、彼はしばしば大規模な魔法のプロジェクトに取り組みました。彼には共通の問題がありました。マップまたはセットにオブジェクトを保存すると、それらのオブジェクトは、パーティーから出ようとしないゲストのように永久に残るのです。たとえ不要になったとしても、それらは残り、王国の貴重な記憶を占めていました。
開発者は、「後片付けを気にせずに、シークレットを一時的に保存する方法があればどうなるでしょうか?」
と考えました。ある日、メッセージが書かれた不思議な巻物が届きました:
「WeakMap と WeakSet を使用して、忘れられた秘密を処理します。必要がなくなったら消えます。」
興味をそそられた開発者は、WeakMap と WeakSet を召喚しました。
WeakMap 自体が紹介されました:
「私はキーと値のペアを保持していますが、キーはオブジェクトである必要があります。キーがなくなったらペアを消去しますのでご安心ください。」
開発者がテストしました:
let key = { id: 1 }; // The magical key let weakMap = new WeakMap(); weakMap.set(key, "This is a secret"); // Storing a secret console.log(weakMap.get(key)); // Output: This is a secret // If the key is forgotten: key = null; // The secret vanishes from WeakMap, cleaned by the garbage collector
WeakMap の説明:
「ユーザー セッションの追跡や結果のキャッシュなど、オブジェクトに関するプライベート メタデータの保存に最適です。」
WeakSet が前進しました:
「オブジェクトも保存しますが、オブジェクトのみです。オブジェクトが消えると、セット内のそのメンバーも消えます。」
開発者はそれを試してみることにしました:
let obj = { name: "Mystical Object" }; let weakSet = new WeakSet(); weakSet.add(obj); // Adding the object to the WeakSet console.log(weakSet.has(obj)); // Output: true // If the object is forgotten: obj = null; // The object is automatically removed from WeakSet
WeakSet の続き:
「変更を監視する DOM 要素など、一時的に存在する必要があるオブジェクトを追跡するのに最適です。」
Dev は、彼らと協力しながら、なぜこれらの構造がユニークなのかを理解しました。
開発者は新しいツールに満足していました。 WeakMap と WeakSet は、メモリを効率的に管理し、プライベート データを安全に保つための彼の忠実な味方になりました。魔法使いは、彼らが常に正しい選択であるとは限らないが、適切な状況では彼らの魔法が非常に貴重であることを学びました。
そのため、JavaScript の国では秘密は安全に保たれ、メモリが再び無駄になることはありませんでした。
以上がJavaScript における WeakMap と WeakSet の物語: 忘れられた秘密の守護者の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。