javascript / expert
Snippet
Metaprogrammierung-Steuerflussabfangung mit Proxy-Traps
Der Proxy apply-Trap fängt Funktionsaufrufe zur Laufzeit ab. In Kombination mit Reflect.apply ermöglicht er Validierungsprüfungen und Guard-Checks direkt im Aufruf-Stack, ohne den Quellcode der Zielfunktion zu verändern.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function createGuardedTarget(targetFunction, validator) {return new Proxy(targetFunction, {apply(target, thisArg, argumentsList) {const isValid = validator(...argumentsList);if (!isValid) {throw new RangeError('Function arguments failed validation check');}return Reflect.apply(target, thisArg, argumentsList);}});}const calculateTax = (amount, rate) => amount * rate;const safeCalculateTax = createGuardedTarget(calculateTax,(amount, rate) => typeof amount === 'number' && amount > 0 && rate > 0);console.log(safeCalculateTax(100, 0.2)); // 20
nodejs
Erklärung
1
apply(target, thisArg, argumentsList) {
Fängt Ausführungsaufrufe ab, die an die Zielfunktion gerichtet sind.
2
throw new RangeError('Function arguments failed validation check');
Stoppt den Steuerfluss vor Aufruf der Zielfunktion, falls die Validierung fehlschlägt.
3
return Reflect.apply(target, thisArg, argumentsList);
Delegiert gültige Aufrufe an das Originalziel mit dessen Kontextbindung.