javascript - 为什么 console.log.apply() 抛出非法调用错误?

标签 javascript internet-explorer firefox google-chrome

<分区>

当我在 Chrome 18 beta 中执行以下代码时出现错误:

console.log.apply(this, ['message']);

TypeError: Illegal invocation.

在 Firefox 10 中,它按预期工作。

在 IE9 中,我收到错误:对象不支持“应用”属性或方法

我猜这与浏览器如何实现 console.log 有关。

为什么它在 Firefox 中有效,但在 Chrome 和 IE 中无效?我希望有人能阐明造成这种情况的原因及其后果。

这里是 an executable sample在 JS Bin 上。

最佳答案

consolelog 是宿主对象。它们的行为依赖于实现,并且在很大程度上不需要实现 ECMAScript 的语义。

FWIW,您的 jsBin 在 Chrome 中也会失败,除非您将其更改为...

console.log.apply(console, ['message']);

但这似乎是 log 只是预期 console 的调用上下文。

关于javascript - 为什么 console.log.apply() 抛出非法调用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521921/

相关文章:

firefox - 如何阻止 Firebug 在脚本错误时中断?

javascript - 为什么 JavaScript 会有这样的行为?

javascript - JQuery 插件 - 重定向计时器出错

javascript - PHP 登录脚本错误地显示 HTML 代码

JqueryUI Draggable 无法在 IE 中工作?

javascript - IE点击事件的烦恼

firefox - 在不关注浏览器的情况下在 emacs 中运行 browse-url

javascript - jquery ui datepicker - 如何在一个日期选择器中设置两个最小/最大日期限制?

html - 虚拟服务器无法检测浏览器版本

javascript - 如何确定applicationCache是​​否已在firefox中获得批准