MySQL Java JavaScript PHP Python HTML-CSS C-sharp

WeakMap

WeakMap reprezintă o extensie a colecției Map. Caracteristica distinctivă a WeakMap este că toate elementele sale trebuie să reprezinte obiecte. În același timp, cheile trebuie să fie obiecte.

Crearea WeakMap

Trebuie menționat că obiectul WeakMap nu suportă iterarea.

// WeakMap gol
const weakMap1 = new WeakMap();

// WeakMap cu inițializare de date
let key1 = { key: 1 };
let key2 = { key: 2 };
let value1 = { name: "Tom" };
let value2 = { name: "Sam" };

const weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);

Pentru adăugarea de noi obiecte sau modificarea celor existente, se folosește metoda set():

let key1 = {key:1};
let key2 = {key:2};
let value1 = {name: "Tom"};
let value2 = {name: "Sam"};

const weakMap2 = new WeakMap([[key1, value1]]);
weakMap2.set(key2, value2);
weakMap2.set(key1, {name: "Kate"});
console.log(weakMap2.get(key1)); // {name: "Kate"}
console.log(weakMap2.get(key2)); // {name: "Sam"}

Pentru a obține obiecte în funcție de cheie dintr-un WeakMap, se utilizează metoda get():

let key1 = {key:1};
let key2 = {key:2};
let value1 = {name: "Tom"};
let value2 = {name: "Sam"};

const weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);
console.log(weakMap2.get(key1)); // {name: "Tom"}

Pentru a verifica existența unui element în funcție de o anumită cheie, se utilizează metoda has():

let key1 = {key:1},
key2 = {key:2};
let value1 = {name: "Tom"},
value2 = {name: "Sam"};

const weakMap2 = new WeakMap([[key1, value1]]);
console.log(weakMap2.has(key1)); // true
console.log(weakMap2.has(key2)); // false

Pentru a șterge un element în funcție de o anumită cheie, se utilizează metoda delete():

let key1 = {key:1},
key2 = {key:2};
let value1 = {name: "Tom"},
value2 = {name: "Sam"};

const weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);
console.log(weakMap2.has(key1)); // true
weakMap2.delete(key1);
console.log(weakMap2.has(key1)); // false

Referințe slabe

let jsCode = {code: "js"},
tsCode = {code: "ts"};
let js = {lang: "JavaScript"},
ts = {lang: "TypeScript"};
const weakMap = new WeakMap([[jsCode, js], [tsCode, ts]]);

jsCode = null;

console.log(weakMap);
console.log("Anumite operații");
const timerId = setTimeout(function(){
console.log(weakMap);
clearTimeout(timerId);
}, 30000);
jsCode = null;
let jsCode = {code: "js"},
tsCode = {code: "ts"};
let js = {lang: "JavaScript"},
ts = {lang: "TypeScript"};
const map = new Map([[jsCode, js], [tsCode, ts]]);

jsCode = null;

console.log(map);
console.log("Anumite operații");
const timerId = setTimeout(function(){
console.log(map);
clearTimeout(timerId);
}, 30000);
← Lecția anterioară Lecția următoare →