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.
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?”
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.
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
WeakMap menjelaskan:
“Saya sesuai untuk menyimpan metadata peribadi tentang objek, seperti menjejak sesi pengguna atau membuat cache hasil.”
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
WeakSet diteruskan:
"Saya sesuai untuk menjejak objek yang perlu wujud buat sementara waktu, seperti elemen DOM yang diperhatikan untuk perubahan."
Semasa Dev bekerja dengan mereka, dia menyedari mengapa struktur ini unik:
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!