Предположим, я имел следующие функции:Как можно динамически изменить строку функции JavaScript?
function alertMesg()
{
alert("This ok function alerts message!");
}
Теперь во время выполнения Я хотел бы изменить функцию alertMesg, чтобы сделать что-то еще. Моя мысль заключалась в том, чтобы сделать что-то вроде этого.
var temp = window.alertMesg.toString.replace("ok","great")
temp = temp.replace('function alertMesg()',"");
window.alertMesg = new Function(temp);
В основном проблема заключается в том, что я не могу контролировать источник в функции alertMesg. Я хотел бы изменить функцию, но я не могу ее изменить, потому что она создается на стороне сервера. При этом мне нужно, чтобы он действовал по-разному.
PS: Я забыл упомянуть важную часть: мне нужно сохранить большую часть функции. Я не могу просто заменить функцию правильно. Я должен сохранить 95% функции так, как она есть, и изменить остальные пять процентов.
@Barlow Tucker, quixoto, pekka Спасибо, за интерес.
В принципе, я не думаю, что идея прокси-сервера будет работать, потому что я не просто добавляю функциональность, я меняю функциональность кода. Например, я хочу, чтобы третья строка функции отличалась. В моем реальном примере жизни я должен добавить строку прямо в середине функции.
Возможный дубликат [JavaScript: Переопределение предупреждения()] (http://stackoverflow.com/questions/1729501/javascript-overriding-alert) –
Этот дубликат должен ответить на него (см. Принятый ответ с «прокси-шаблоном», , замените 'window.alert()' вашей функцией). –
Прокси может позволить мне добавить функциональность к этой функции, но это не позволяет мне удалить функциональность. –