Your code really works (I just tested it in Firefox, latest version).
However, I could suggest that some implementations might have a problem with the arguments object when passing as the value of Function.prototype.apply . So try:
function start(){ var args = Array.prototype.slice.call( arguments ); args[0] = '<h1>' + args[0] + '</h1>'; log.apply(this, args); }
By calling Array.prototype.slice on an arguments object, we create a "true" ECMAscript array that we may need as a second argument to .apply()
source share