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
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.