Javascript 在函数中传递console.log时发生非法调用错误

Javascript 在函数中传递console.log时发生非法调用错误,javascript,google-chrome,Javascript,Google Chrome,我对此有点困惑。 请在下面找到代码 var o={ printToConsole: function(f){ f(1); } }; o.printToConsole(console.log); //类型错误:非法调用//我得到一个类型错误 从console.log的定义中我们可以得到 `function log() { [native code] }` 在chrome中,它清楚地显示它不接受任何参数,但当我们尝试在控制台上打印东西时,我们会这样写,即将参数传递到console.lo

我对此有点困惑。 请在下面找到代码

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

o.printToConsole(console.log);
//类型错误:非法调用
//我得到一个类型错误

从console.log的定义中我们可以得到

`function log() { [native code] }`
在chrome中,它清楚地显示它不接受任何参数,但当我们尝试在控制台上打印东西时,我们会这样写,即将参数传递到console.log

console.log('Take me on Console');
为什么会出现此类型错误以及此console.log在chrome中的行为?

更改

o.printToConsole(console.log);


console.log
函数仅在接收者(
this
)是控制台时才起作用(事实上,它依赖于浏览器)。

Firefox在控制台中显示消息,而不将其与控制台绑定。发现了一个类似的问题
bind()
方法在Chrome中对我很有效
o.printToConsole(console.log.bind(console));
o.printToConsole(function(){ console.log.apply(console.log, arguments) });