capypad
0 Tage Serie
javascript / intermediate
Snippet

Verwaltung privater Zustände mit WeakMap

WeakMap ist eine Sammlung von Schlüssel/Wert-Paaren, bei denen die Schlüssel Objekte sind und schwach referenziert werden. Dies ist ein Pattern zur Erstellung echter privater Zustände in JavaScript-Klassen, das sicherstellt, dass private Daten automatisch bereinigt werden, wenn die Instanz gelöscht wird.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const privateData = new WeakMap();
 
class SecureUser {
constructor(name, token) {
privateData.set(this, { name, token });
}
 
getProfile() {
const { name } = privateData.get(this);
return `User: ${name}`;
}
}
 
const user = new SecureUser('Alice', 'secret-123');
console.log(user.token); // undefined
Erklärung
1
const privateData = new WeakMap();
Erstellt eine Map, in der Schlüssel (Objekte) die Garbage Collection nicht verhindern.
2
privateData.set(this, { name, token });
Speichert sensible Daten, die mit der aktuellen Instanz ('this') verknüpft sind, außerhalb des Objekts selbst.
3
privateData.get(this);
Ruft die gespeicherten privaten Daten unter Verwendung der aktuellen Instanz als Suchschlüssel ab.