为什么不能使用.call()调用console.log

时间:2014-08-18 07:48:52

标签: javascript

以下代码返回一个弹出窗口,其中包含' hello'。

alert.call(this, 'hello');

但下面的代码返回错误" TypeError:非法调用"。

console.log.call(this, 'hello');

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

1 个答案:

答案 0 :(得分:10)

alert是一种全局方法(window.alert)。如果您将其称为alert.call(this),则this是窗口对象。

因为log是控制台对象中的一个方法,所以它希望this本身就是控制台对象,但你仍然使用thiswindow)来调用它,所以你得到了错误。

正常运行console.log.call(console, 'test')