Maxmaxmахimus, есть более приличный способ сделать замену в функции (с учётом того, что вручную код функции f() никак поменять, вариант со сменой обработчика подобной функцией в расчёт не берём, то есть нужно получить новую функцию из старой путём некоторых замен в старой)?
<button>click</button>
<button>change</button>
<script>
function f() {
if (true) {
alert('old');
}
}
var childs = document.body.children;
childs[0].onclick = f;
childs[1].onclick = function () {
childs[0].onclick = function () {
eval(f.toString().replace ('old', 'new').replace('function f() {', '').replace(/}$/, ''));
}
}
</script>