Rumah >hujung hadapan web >tutorial js >Menguasai WeakMap dan WeakSet dalam JavaScript: Pengurusan Memori yang Cekap
WeakMap dan WeakSet adalah serupa dengan Map dan Set, tetapi dengan perbezaan utama yang berkaitan dengan pengurusan memori. Kedua-dua WeakMap dan WeakSet membenarkan penyimpanan objek, tetapi mereka tidak menghalang pengumpulan sampah kunci atau nilai apabila ia tidak lagi dirujuk di tempat lain. Ini menjadikannya berguna untuk situasi di mana anda perlu menyimpan metadata tentang objek tetapi tidak mahu storan memastikan objek tersebut hidup tanpa perlu.
Sebuah WeakMap ialah koleksi pasangan nilai kunci dengan kunci mestilah objek dan nilai boleh menjadi sebarang jenis data. Ciri utama WeakMap ialah ia tidak menghalang kuncinya daripada dikumpul sampah apabila tiada rujukan lain kepada kunci itu.
Anda boleh mencipta WeakMap menggunakan pembina WeakMap, menghantar pelbagai pasangan nilai kunci:
const weakMap = new WeakMap();
Anda menambah entri menggunakan kaedah set():
const weakMap = new WeakMap();
const obj = {}; const weakMap = new WeakMap(); weakMap.set(obj, 'This is a weak map entry'); console.log(weakMap.get(obj)); // Output: 'This is a weak map entry'
Set WeakSet serupa dengan Set, tetapi ia hanya membenarkan objek disimpan sebagai nilai dan ia juga membenarkan pengumpulan sampah automatik unsur-unsurnya apabila tiada rujukan kepada objek yang disimpan dalam set.
Anda boleh mencipta WeakSet menggunakan pembina WeakSet:
const obj1 = {}; const obj2 = {}; const weakMap = new WeakMap(); weakMap.set(obj1, 'value1'); weakMap.set(obj2, 'value2'); console.log(weakMap.get(obj1)); // Output: 'value1' console.log(weakMap.has(obj2)); // Output: true weakMap.delete(obj1); console.log(weakMap.has(obj1)); // Output: false
Anda menambah entri menggunakan kaedah add():
const weakMap = new WeakMap();
const obj = {}; const weakMap = new WeakMap(); weakMap.set(obj, 'This is a weak map entry'); console.log(weakMap.get(obj)); // Output: 'This is a weak map entry'
Feature | WeakMap | WeakSet | Map | Set |
---|---|---|---|---|
Key/Value Types | Keys must be objects, values can be any type | Values must be objects | Keys and values can be any type | Values must be unique, any type |
Garbage Collection | Automatically garbage-collected when no references to the key | Automatically garbage-collected when no references to the value | Does not remove entries unless manually deleted | Does not remove entries unless manually deleted |
Iterability | Not iterable | Not iterable | Iterable (can loop through entries) | Iterable (can loop through values) |
Methods | set(), get(), has(), delete() | add(), has(), delete() | set(), get(), has(), delete() | add(), has(), delete() |
Kes Penggunaan Peta Lemah:
Kes Penggunaan WeakSet:
Hai, saya Abhay Singh Kathayat!
Saya seorang pembangun tindanan penuh dengan kepakaran dalam kedua-dua teknologi hadapan dan belakang. Saya bekerja dengan pelbagai bahasa pengaturcaraan dan rangka kerja untuk membina aplikasi yang cekap, berskala dan mesra pengguna.
Jangan ragu untuk menghubungi saya melalui e-mel perniagaan saya: kaashshorts28@gmail.com.
Atas ialah kandungan terperinci Menguasai WeakMap dan WeakSet dalam JavaScript: Pengurusan Memori yang Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!