Estoy tratando de entender cómo se pasa y se recupera el objeto "evento" entre funciones. Entendí que el evento se pasa de forma predeterminada como un argumento y después de ver el ejemplo a continuación, me confunde aún más cómo funciona esto. ¿Cómo "...args" obtiene el objeto de evento?
const MyInput = document.querySelector('input'); const checkActivity=(f1)=>{ return (...args)=>{ console.log(args); f1(args); }; } const MyFunc=(e)=>{ console.log(e); }; MyInput.addEventListener('input',checkActivity(MyFunc));¿Cómo "...args" obtiene el objeto de evento?
Tomemos la última línea de código y posiblemente la aclaremos un poco:
const inputHandler = checkActivity(MyFunc); MyInput.addEventListener('input', inputHandler); checkActivity crea una función que devuelve, a la que he llamado inputHandler arriba. Esa función es:
(...args) => { console.log(args); f1(args); }; Los ...args en la lista de parámetros de la función es un parámetro de descanso . Dice "tomar todos los argumentos con los que se llamó a esta función y reunirlos en una matriz". Entonces args es una matriz de los argumentos con los que se llamó a la función.
Una función adjunta como detector de eventos con addEventListener como inputHandler se llama con un solo argumento: el objeto de evento para el evento. Entonces, en inputHandler , args[0] es el objeto de evento.
Aquí, checkActivity(MyFunc) se ejecuta antes de agregar el detector de eventos y no se usa como una devolución de llamada. Es el resultado de esta llamada que se utiliza como devolución de llamada. Devolución de llamada que acepta (... argumentos) posiblemente un evento.