Apakah WeakMap dalam JavaScript?
WeakMap ialah koleksi pasangan nilai kunci di mana kuncinya adalah objek dan nilainya boleh menjadi nilai arbitrari. Tidak seperti Peta biasa, kunci dalam WeakMap "dirujuk dengan lemah." Ini bermakna jika tiada rujukan lain kepada objek utama, ia boleh menjadi sampah yang dikumpul, membantu mengelakkan kebocoran memori.
Mengapa kita memerlukan WeakMap?
1. Pengurusan Memori: Membantu dalam penggunaan memori yang cekap dengan membenarkan pengumpulan sampah kunci yang tidak digunakan.
2. Data Peribadi: Boleh digunakan untuk menyimpan data peribadi untuk objek, kerana data tidak boleh diakses melainkan anda mempunyai kunci objek.
3. Mengelakkan Kebocoran Memori: Sangat berguna dalam senario seperti manipulasi DOM di mana anda mungkin mahu menyimpan metadata untuk elemen DOM tanpa menghalang pengumpulan sampah mereka apabila ia dialih keluar daripada DOM.
Bagaimanakah kita menggunakan WeakMap?
WeakMap dibuat menggunakan pembina WeakMap. Begini cara anda boleh menggunakannya:
- Mencipta Peta Lemah:
let weakMap = new WeakMap();
- Menetapkan nilai:
let obj = {}; weakMap.set(obj, 'value associated with obj');
- Mendapatkan nilai:
console.log(weakMap.get(obj)); // 'value associated with obj'
- Menyemak kewujudan:
console.log(weakMap.has(obj)); // true
- Memadamkan nilai:
weakMap.delete(obj); console.log(weakMap.has(obj)); // false
Contoh Lucu
Mari gunakan WeakMap untuk menjejak wira-wira yang sedang berada dalam persembunyian rahsia. Tempat persembunyian rahsia hanya menyimpan maklumat tentang wira-wira selagi mereka berada di dalam. Sebaik sahaja mereka pergi, tempat persembunyian melupakan mereka untuk mengelakkan kelebihan memori.
Contoh: Superhero Hideout
let secretHideout = new WeakMap(); function Superhero(name) { this.name = name; } // Superheroes enter the hideout let batman = new Superhero('Batman'); let superman = new Superhero('Superman'); secretHideout.set(batman, 'Batcave'); secretHideout.set(superman, 'Fortress of Solitude'); console.log(secretHideout.get(batman)); // 'Batcave' console.log(secretHideout.get(superman)); // 'Fortress of Solitude' // Batman leaves the hideout batman = null; // No more references to Batman // After garbage collection, the hideout forgets about Batman setTimeout(() => { console.log(secretHideout.get(batman)); // undefined (Batman has been garbage collected) console.log(secretHideout.has(superman)); // true (Superman is still in the hideout) }, 1000);
Dalam contoh ini:
- Mencipta Wira-wira: Batman dan Superman dicipta sebagai objek.
- Memasuki Persembunyian: Mereka memasuki tempat persembunyian masing-masing dan kami menyimpan maklumat ini dalam WeakMap.
- Meninggalkan Persembunyian: Apabila Batman meninggalkan tempat persembunyian (iaitu, batman = null), tiada lagi rujukan kepada Batman. Pengumpulan sampah akan mengeluarkan Batman daripada ingatan.
- Menyemak Persembunyian: Selepas tamat masa, kami menyemak tempat persembunyian. Batman telah dialih keluar (sampah dikumpul), tetapi Superman masih ada.
Kenapa ini kelakar?
Bayangkan tempat persembunyian rahsia yang sangat rahsia sehingga lupa siapa yang ada di dalamnya jika mereka tidak kembali segera! Sama seperti dalam contoh ini, WeakMap melupakan Batman sebaik sahaja dia pergi, memastikan ingatan tempat persembunyian itu bersih dan cekap.
Perkara Utama
Kunci mestilah objek: Anda hanya boleh menggunakan objek sebagai kunci dalam WeakMap.
Tidak boleh leter: WeakMap tidak boleh leter, jadi anda tidak boleh menggunakannya dengan gelung seperti for-of.
Pengumpulan sampah: Kelebihan utama ialah ia membolehkan pemungut sampah membersihkan kunci yang tidak lagi dirujuk di tempat lain dalam program, mengelakkan kebocoran memori.
Ini menjadikan WeakMap amat berguna untuk kes di mana anda perlu menyimpan data sementara yang berkaitan dengan objek tanpa perlu risau tentang memastikan objek tersebut hidup tanpa perlu.
Atas ialah kandungan terperinci Apakah WeakMap dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom
