window.console.logInternet Explorer 9 在什么情况下定义?
window.console.log
即使window.console.log被定义,window.console.log.apply并且window.console.log.call是不确定的。为什么是这样?
window.console.log.apply
window.console.log.call
有关IE8的相关问题:IE8中console.log发生了什么?
在Internet Explorer9(和8)中,console仅在为特定选项卡打开开发人员工具时才显示对象。如果隐藏该选项卡的开发人员工具窗口,则该console对象在您浏览到的每个页面上均保持暴露状态。如果打开一个新选项卡,则还必须打开该选项卡的开发人员工具,以便console暴露该对象。
console
该console对象不是任何标准的一部分,并且是文档对象模型的扩展。与其他DOM对象一样,它也被视为宿主对象,不需要像本机ECMAScript函数和对象那样Object从继承,也不需要从其方法继承Function。这就是原因apply,call并且在这些方法上未定义。在IE9中,大多数DOM对象已得到改进,可以从本地ECMAScript类型继承。由于开发人员工具被认为是IE的扩展(尽管是内置扩展),因此它们显然没有获得与DOM其余部分相同的改进。
Object
Function
apply
call
对于它的价值,您仍然可以Function.prototype在console带有一点bind()魔术的方法上使用一些方法:
Function.prototype
bind()
var log = Function.prototype.bind.call(console.log, console); log.apply(console, ["this", "is", "a", "test"]); //-> "thisisatest"