javascript / expert
Snippet
Metaprogrammierung von Funktionsaufrufen mit Proxy-Apply-Traps
Funktionen in JavaScript sind Objekte erster Klasse und können in Proxies gehüllt werden. Durch Abfangen der apply-Falle kann die Funktionsausführung für Validierung oder Telemetrie vor dem eigentlichen Aufruf abgefangen werden.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function createValidatedFunction(fn, validator) {return new Proxy(fn, {apply(target, thisArg, args) {if (!validator(...args)) {throw new TypeError('Invalid argument types provided to proxied function');}return Reflect.apply(target, thisArg, args);}});}const add = createValidatedFunction((a, b) => a + b,(a, b) => typeof a === 'number' && typeof b === 'number');
nodejs
Erklärung
1
return new Proxy(fn, {
Hüllt die Zielfunktion in eine Proxy-Instanz.
2
apply(target, thisArg, args) {
Fängt Funktionsaufrufe ab und erhält Zielfunktion, Kontext und Argumente.
3
return Reflect.apply(target, thisArg, args);
Leitet die Ausführung nach erfolgreicher Validierung über die Reflect API an die Zielfunktion weiter.