Hemos visto como Reescribir funciones en javascript pero a veces reescribir una función entera no es lo más adecuado. Actualmente me encuentro con la necesidad de alterar ciertas partes de funciones enormes que son llamadas como servicios web con sus variables y sesiones. En definitiva, que esas funciones ni siquiera son siempre iguales para cada usuario que las carga.
Para solucionar estos problemas he creado una función que es capaz de reemplazar parte de los textos de las funciones sin alterar el resto de la definición. Dejo aquí el código:
replaceInFunction = function ( functionName, search, replace)
{
theFunction = eval(functionName).toString();
eval( functionName + "= function " + theFunction.substring(theFunction.indexOf("(")).replace(search,replace) );
}
Esta función nos da 3 argumentos para usarla:
- functionName : es el nombre de nuestra función, la que queremos alterar.
- search : el fragmento buscado
- replace : el texto por el que se reemplazará
Para hacer el reemplazo se usa la función replace() así que no debería dar demasiados problemas a nadie.
Un ejemplo de su uso…
// definimos la función...
function showMe ( variable )
{
document.write( variable );
}
showMe("hello world");
// --> escribe "hello world" en pantalla
replaceInFunction("showMe","document.write","alert");
showMe("hello world");
// --> lanza un alert que diga "hello world"
Una respuesta a “Reemplazar partes de funciones javascript”
Muy interesante el código. Ya lo estoy usando. gracias 🙂