以下代码返回一个弹出窗口,其中包含' hello'。
alert.call(this, 'hello');
但下面的代码返回错误" TypeError:非法调用"。
console.log.call(this, 'hello');
alert和console.log的实现有什么区别?
答案 0 :(得分:10)
alert
是一种全局方法(window.alert
)。如果您将其称为alert.call(this)
,则this
是窗口对象。
因为log是控制台对象中的一个方法,所以它希望this
本身就是控制台对象,但你仍然使用this
(window
)来调用它,所以你得到了错误。
正常运行console.log.call(console, 'test')
。