Why does console.log.apply() throw an Illegal Invocation error? [duplicate]
console
and log
are host objects. Their behavior is implementation dependent, and to a large degree are not required to implement the semantics of ECMAScript.
FWIW, your jsBin fails in Chrome as well unless you change it to...
console.log.apply(console, ['message']);
but that seems to be that log
simply anticipates a calling context of console
.
Here's an alternate solution. I'm not sure the case where there are no args works as expected.
function logr(){ var i = -1, l = arguments.length, args = [], fn = 'console.log(args)'; while(++i<l){ args.push('args['+i+']'); }; fn = new Function('args',fn.replace(/args/,args.join(','))); fn(arguments);};logr(1,2,3);logr();logr({},this,'done')