Supongamos que tenía la siguiente función:¿Cómo se puede cambiar dinámicamente una línea de una función de JavaScript?
function alertMesg()
{
alert("This ok function alerts message!");
}
Ahora en tiempo de ejecución me gustaría cambiar la función alertMesg para hacer otra cosa. Mi idea era hacer algo así.
var temp = window.alertMesg.toString.replace("ok","great")
temp = temp.replace('function alertMesg()',"");
window.alertMesg = new Function(temp);
Básicamente, el problema es que no tengo control sobre la fuente en la función alertMesg. Me gustaría cambiar la función, pero en realidad no puedo cambiar la fuente porque se produce en el lado del servidor. Dicho eso, necesito que actúe de manera diferente.
PD: Olvidé mencionar una parte importante: tengo que mantener la mayor parte de la función. No puedo simplemente reemplazar la función correctamente. Tengo que mantener el 95% de la función como está, y cambiar el otro cinco por ciento.
@Barlow Tucker, quixoto, pekka Gracias, por el interés.
Básicamente, no creo que la idea de proxy funcionará porque no solo estoy agregando funcionalidad, estoy cambiando la funcionalidad del código. Quiero, por ejemplo, que la tercera línea de la función sea diferente. En mi ejemplo de la vida real, tengo que agregar una línea justo en el medio de una función.
posible duplicado de [JavaScript: Anulación de alerta()] (http://stackoverflow.com/questions/1729501/javascript-overriding-alert) –
Ese duplicado debe responderlo (Consulte la respuesta aceptada con el "patrón de proxy") , reemplace 'window.alert()' por su función). –
Proxy podría permitirme agregar funcionalidad a esta función, pero no me permite eliminar la funcionalidad. –