Error de Invocación ilegal cuando console.log pasó en una function

Estoy un poco confundido sobre esto. Por favor encuentre el código como abajo.

var o={ printToConsole: function(f){ f(1); } }; o.printToConsole(console.log); 

//TypeError: Illegal invocation // Obtengo un TypeError

De la definición de console.log obtenemos esto

 `function log() { [native code] }` 

En Chrome, que muestra claramente que no toma ningún argumento, aunque cuando intentamos imprimir cosas en la console escribimos así, es decir, pasamos el argumento a console.log.

 console.log('Take me on Console'); 

¿Por qué recibo este TypeError y cómo se comporta este console.log en Chrome?

Cambio

 o.printToConsole(console.log); 

a

 o.printToConsole(console.log.bind(console)); 

o

 o.printToConsole(function(){ console.log.apply(console.log, arguments) }); 

La function console.log solo funciona cuando el receptor ( this ) es la console (de hecho, depende del browser).