Rumah > hujung hadapan web > tutorial js > Kisah WeakMap dan WeakSet dalam JavaScript: Penjaga Rahsia yang Dilupakan

Kisah WeakMap dan WeakSet dalam JavaScript: Penjaga Rahsia yang Dilupakan

Susan Sarandon
Lepaskan: 2024-12-01 02:54:09
asal
876 orang telah melayarinya

A Tale of WeakMap and WeakSet in JavaScript: The Guardians of Forgotten Secrets

Pada suatu masa dahulu di tanah mistik JavaScript, dua struktur data khas hidup dengan tenang dalam bayang-bayang: WeakMap dan WeakSet. Mereka tidak mencolok seperti sepupu mereka, Map and Set, tetapi mereka mempunyai kuasa rahsia yang menjadikan mereka tidak boleh digantikan dalam alam ajaib pengurusan ingatan.


Bermula Kisah: Masalah Rahsia Terlupa

Terdapat ahli sihir tua yang bijak bernama Dev, yang sering bekerja pada projek ajaib yang besar. Dia mempunyai masalah biasa: setiap kali dia menyimpan objek dalam Peta atau Set, objek itu kekal selama-lamanya, seperti tetamu yang tidak akan meninggalkan parti. Walaupun mereka tidak lagi diperlukan, mereka berlarutan, mengambil ingatan berharga di kerajaan.

Dev berfikir, “Bagaimana jika ada cara untuk menyimpan rahsia buat sementara waktu, tanpa perlu risau tentang membersihkan diri sendiri?”


Ketibaan WeakMap dan WeakSet

Pada suatu hari, skrol misteri tiba dengan mesej:

“Gunakan WeakMap dan WeakSet untuk mengendalikan rahsia anda yang terlupa. Mereka akan hilang apabila mereka tidak diperlukan lagi.”

Tertarik, Dev memanggil WeakMap dan WeakSet.


Peta Lemah: Penyimpan Kunci Peribadi

WeakMap memperkenalkan dirinya:

“Saya memegang pasangan nilai kunci, tetapi kunci saya mestilah objek. Jika kunci hilang, saya akan memadamkan pasangan itu tanpa anda perlu risau.”

Dev mengujinya:

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
Salin selepas log masuk

WeakMap menjelaskan:

“Saya sesuai untuk menyimpan metadata peribadi tentang objek, seperti menjejak sesi pengguna atau membuat cache hasil.”


WeakSet: The Silent Watcher

WeakSet melangkah ke hadapan:

“Saya juga menyimpan objek, tetapi hanya objek. Jika objek hilang, begitu juga keahliannya dalam set saya.”

Dev memutuskan untuk mencubanya:

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
Salin selepas log masuk

WeakSet diteruskan:

"Saya sesuai untuk menjejak objek yang perlu wujud buat sementara waktu, seperti elemen DOM yang diperhatikan untuk perubahan."


Mengapa WeakMap dan WeakSet Istimewa

Semasa Dev bekerja dengan mereka, dia menyedari mengapa struktur ini unik:

  1. Pembersihan Automatik: Objek dalam WeakMap dan WeakSet secara automatik dikumpul sampah apabila ia tidak lagi dirujuk di tempat lain.
  2. Tiada Harta Saiz: Mereka tidak mempunyai saiz atau lelaran, kerana mereka mahu memastikan rahsia mereka ringan dan tidak kelihatan.
  3. Kecekapan Ingatan: Mereka seperti angin—memegang sesuatu dengan longgar dan melepaskannya apabila tiba masanya.

Moral Kisah

Dev gembira dengan alatan baharunya. WeakMap dan WeakSet menjadi sekutu setianya untuk mengurus memori dengan cekap dan memastikan data peribadi selamat. Ahli sihir mengetahui bahawa walaupun mereka bukan pilihan yang tepat, sihir mereka sangat berharga dalam situasi yang betul.

Jadi, di tanah JavaScript, rahsia kekal selamat, dan ingatan tidak pernah disia-siakan lagi.

Atas ialah kandungan terperinci Kisah WeakMap dan WeakSet dalam JavaScript: Penjaga Rahsia yang Dilupakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan