¿Hay alguna manera de hacer que una función genere una declaración console.log cuando se llama registrando un gancho global en algún lugar (es decir, sin modificar la función real) o por algún otro medio?
97
¿Hay alguna manera de hacer que una función genere una declaración console.log cuando se llama registrando un gancho global en algún lugar (es decir, sin modificar la función real) o por algún otro medio?
Respuestas:
Esta es una forma de aumentar todas las funciones en el espacio de nombres global con la función que elija:
Una desventaja es que ninguna función creada después de la llamada
augment
tendrá el comportamiento adicional.fuente
fn.apply(this, arguments);
areturn fn.apply(this, arguments);
return
a la función más interna.En cuanto a mí, esta parece la solución más elegante:
fuente
Método proxy para registrar llamadas a funciones
Hay una nueva forma de usar Proxy para lograr esta funcionalidad en JS. Supongamos que queremos tener un
console.log
siempre que se llame a una función de una clase específica:podemos reemplazar la instanciación de nuestra clase con un Proxy que anule cada propiedad de esta clase. entonces:
compruebe que esto realmente funciona en Codepen
Recuerde que el uso
Proxy
le brinda muchas más funciones que solo registrar nombres de consola.Además, este método funciona en Node.js también.
fuente
Si desea un registro más específico, el siguiente código registrará las llamadas a funciones para un objeto en particular. Incluso puede modificar los prototipos de objetos para que todas las instancias nuevas también se registren. Usé Object.getOwnPropertyNames en lugar de para ... in, por lo que funciona con las clases ECMAScript 6, que no tienen métodos enumerables.
fuente
Aquí hay algo de Javascript que reemplaza agrega console.log a cada función en Javascript; Juega con él en Regex101 :
Es un 'truco rápido y sucio' pero lo encuentro útil para depurar. Si tiene muchas funciones, tenga cuidado porque esto agregará mucho código. Además, la expresión regular es simple y es posible que no funcione para declaraciones o nombres de funciones más complejos.
fuente
De hecho, puede adjuntar su propia función a console.log para todo lo que se carga.
fuente