Mi pregunta relacionada anterior: ¿Cómo intercepto la función de clasificación dentro de un proxy JS?
Dado el proxy:
function sort(customSort) { /* Write logs */ console.log("Intercepted sort") return this.sort(customSort); } function get( target, prop, receiver ) { if (prop === 'sort') { /* How to capture custom sort?*/ return sort.bind(target); } console.log("Intercepted get") return Reflect.get( target, prop, receiver ); } var handler = { get }; var proxy = new Proxy( new Array(...[7,1,2,3,4,5]), handler );Pero ahora agrego una función de clasificación personalizada:
console.log(proxy.sort((a,b) => .... /* eg, ab */)) No puedo entender cómo capturar la función para pasarla a la función de clasificación de proxy. Intenté capturar diferentes argumentos en la función get , pero no puedo encontrar el correcto.
La solución fue similar a: ¿Cómo ordenar solo una parte de la matriz? entre índices dados
Devuelvo una función que accede al argument[0]
function sort(customSort) { /* Write logs */ console.log("Intercepted sort") return this.sort(customSort); } function get( target, prop, receiver ) { if (prop === 'sort') { /* How to capture custom sort?*/ return function(customSort) => { return this.sort(customSort || ((a,b) => ab) ) } } console.log("Intercepted get") return Reflect.get( target, prop, receiver ); }