Javascript 为什么可以';不能使用.call()调用t console.log

Javascript 为什么可以';不能使用.call()调用t console.log,javascript,Javascript,下面的代码返回一个带有“hello”的弹出窗口 alert.call(this, 'hello'); 但是下面的代码返回一个错误“TypeError:非法调用” alert和console.log的实现有什么区别?alert是一种全局方法(window.alert)。如果您调用它alert.call(this),this是窗口对象 因为log是console对象中的一个方法,所以它希望this是console对象本身,但您仍然使用this(窗口)调用它,所以您会得到一个错误 运行console

下面的代码返回一个带有“hello”的弹出窗口

alert.call(this, 'hello');
但是下面的代码返回一个错误“TypeError:非法调用”


alert和console.log的实现有什么区别?

alert
是一种全局方法(
window.alert
)。如果您调用它
alert.call(this)
this
是窗口对象

因为log是console对象中的一个方法,所以它希望
this
是console对象本身,但您仍然使用
this
窗口
)调用它,所以您会得到一个错误


运行
console.log.call(console,'test')
会很好。

@Teemu我想他想知道为什么第二个会产生错误:)查看关于和@SilviuBurcea的更多信息,然后为什么不询问它呢?@Teemu我很抱歉..控制台函数将绑定到console:
console.log.call(this, 'hello');