function add() { var sum = 0; for (var i = 0; i < arguments.length; i++) sum += arguments[i]; return sum; } var realAdd = add; add = function () { alert("hooked add"); var parameters = []; var exp = []; for (var i = 0; i < arguments.length; i++) { parameters.push(arguments[i]); exp.push("parameters[" + i + "]"); } var exp = "realAdd(" + exp.join(",") + ")"; return eval(exp); } alert(add(1, 2, 3, 4));