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) });