Si tengo una función arbitraria myFunc
, lo que pretendo hacer es reemplazar esta función con una llamada envuelta que ejecute código antes y después de que se ejecute, p.Cómo envolver una función en Javascript/jQuery
// note: psuedo-javascript
var beforeExecute = function() { ... }
var afterExecute = function() { ... }
myFunc = wrap(myFunc, beforeExecute, afterExecute);
Sin embargo, no tengo una implementación de la función wrap
requerido. ¿Hay algo que ya exista en jQuery como este (he echado un vistazo a los documentos pero no puedo ver nada)? Alternativamente, ¿alguien sabe de una buena implementación de esto porque sospecho que hay un montón de casos extremos que extrañaré si trato de escribirlo yo mismo?
(Por cierto, el motivo es hacer una instrumentación automática de funciones porque trabajamos mucho en dispositivos cerrados donde los perfiles de Javascript, etc. no están disponibles. Si hay una forma mejor que esto, entonces agradecería respuestas a lo largo de esas líneas también)
Voy a marcar esta como la respuesta correcta, porque creo que es la solución más completa al problema y maneja las funciones con un número arbitrario de argumentos. ¡Aclamaciones! Estaba esperando que haya una función de biblioteca estándar en jQuery para esto, pero siempre puedo agregarlo a nuestras extensiones. –
He hecho una pequeña edición, de modo que el objeto 'regular' 'this' se usa si no se especificó 'thisObject' cuando se creó el contenedor. – Martijn