javascript / expert
Snippet
Pattern-Matching-Router aufgebaut auf WeakMap-Metadaten-Speicherung
Metaprogrammierungs-Muster können WeakMap nutzen, um private Metadaten und Ausführungsverhalten mit Objektinstanzen zu verknüpfen, ohne Speicherlecks zu riskieren oder Objektschlüssel zu verunreinigen. Dieses Muster kapselt Auswertungslogik im nicht zugänglichen Map-Speicher und bietet Anrufersystemen saubere polymorphe Match-Schnittstellen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const patternRegistry = new WeakMap();class RoutePattern {constructor(matcherFn) {patternRegistry.set(this, matcherFn);}match(candidate) {const fn = patternRegistry.get(this);return fn ? fn(candidate) : false;}}const isUserEvent = new RoutePattern(val => typeof val === 'object' && val?.type === 'USER_ACTION');const isSystemLog = new RoutePattern(val => typeof val === 'string' && val.startsWith('SYS_'));function dispatch(event) {if (isUserEvent.match(event)) return 'Handling user action';if (isSystemLog.match(event)) return 'Handling system log';return 'Unhandled event format';}console.log(dispatch({ type: 'USER_ACTION', id: 42 }));
nodejs
Erklärung
1
const patternRegistry = new WeakMap();
Reserviert eine schwach referenzierte Map zur Verknüpfung von Klasseninstanzen mit privater Closure-Logik.
2
patternRegistry.set(this, matcherFn);
Speichert nicht-zählbare Prädikatenlogik strikt gebunden an die Instanzidentität.
3
return fn ? fn(candidate) : false;
Ruft isolierte Matcher-Closures ab und führt sie aus, ohne externe Objektsignaturen zu verändern.