javascript / expert
Snippet
Funktions-Guards höherer Ordnung über Reflect.apply und Proxy-Fallen
Metaprogrammierung ermöglicht das Absichern von Funktionsaufrufen mit Laufzeitvalidierungen. Die Kombination aus Proxy-'apply'-Trap und Reflect.apply bewahrt den ursprünglichen 'this'-Kontext und erzwingt Parameterregeln.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
export function createGuardedFunction(fn, validator) {return new Proxy(fn, {apply(target, thisArg, argList) {if (!validator(...argList)) {throw new TypeError('Argument validation failed');}return Reflect.apply(target, thisArg, argList);}});}
nodejs
Erklärung
1
return new Proxy(fn, {
Ummantelt die Zielfunktion mit einem transparenten Proxy-Interceptor.
2
apply(target, thisArg, argList) {
Fängt Funktionsaufrufe mit Ziel, diesem Kontext und Argumentenliste ab.
3
if (!validator(...argList)) {
Führt Laufzeit-Validierungsprüfungen vor der Weiterleitung des Aufrufs aus.
4
return Reflect.apply(target, thisArg, argList);
Führt die zugrundeliegende Funktion mittels Reflect-Semantik sicher aus.