Stellen Sie sich eine einfache rekursive Funktion vor, die wir umschließen wollen, um den Ein- und Ausgang des Instruments zu steuern.Proxys einer rekursiven Funktion
// A simple recursive function.
const count = n => n && 1 + count(n-1);
// Wrap a function in a proxy to instrument input and output.
function instrument(fn) {
return new Proxy(fn, {
apply(target, thisArg, argumentsList) {
console.log("inputs", ...argumentsList);
const result = target(...argumentsList);
console.log("output", result);
return result;
}
});
}
// Call the instrumented function.
instrument(count)(2);
Dies ist jedoch nur protokolliert den Eingang und Ausgang auf der obersten Ebene. Ich möchte einen Weg finden, count
die instrumentierte Version aufzurufen, wenn es recurses.
Ich glaube, Sie müssen 'count' überschreiben. Da JavaScript einen lexikalischen Geltungsbereich hat, gibt es nicht wirklich etwas anderes, was Sie tun können, um "count" innerhalb der Funktion auf etwas anderes verweisen zu lassen (außer das Überschreiben von "count"). Aber ich würde mich freuen, sich als falsch erwiesen zu haben :) –