0 Tage Serie
javascript / intermediate
Snippet

Privater Klassenstatus mit WeakMap

WeakMap wird verwendet, um wirklich private Daten für Klasseninstanzen zu erstellen. Im Gegensatz zu privaten Klassenfeldern (#) speichert WeakMap Daten extern mit der Instanz als Schlüssel, was sicherstellt, dass die Daten gelöscht werden, wenn die Instanz zerstört wird.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const privates = new WeakMap();
class SecureSession {
constructor(token) {
privates.set(this, { token, createdAt: Date.now() });
}
getToken() {
return privates.get(this).token;
}
}
const session = new SecureSession('secret-123');
console.log(session.token); // undefined
nodejs
Erklärung
1
const privates = new WeakMap();
Initialisiert eine WeakMap, die private Daten speichert, ohne die Garbage Collection zu verhindern.
2
privates.set(this, ...)
Verknüpft ein privates Datenobjekt mit der aktuellen Instanz der Klasse.
3
privates.get(this)
Ruft die privaten Daten nur innerhalb von Klassenmethoden ab, in denen 'this' verfügbar ist.