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 Explorer 9(和 8)中,该console对象仅在针对特定选项卡打开开发人员工具时才公开。如果您隐藏该选项卡的开发人员工具窗口,则该console对象对于您导航到的每个页面都保持公开。如果您打开一个新选项卡,您还必须打开该选项卡的开发人员工具,以便console公开该对象。
console
该console对象不是任何标准的一部分,而是文档对象模型的扩展。与其他 DOM 对象一样,它被视为宿主对象,不需要像原生 ECMAScript 函数和对象那样继承自Object,也不需要继承自 。Function这就是原因apply,并且call在这些方法上未定义。在 IE 9 中,大多数 DOM 对象都被改进为继承自原生 ECMAScript 类型。由于开发人员工具被认为是 IE 的扩展(尽管是内置扩展),因此它们显然没有获得与 DOM 其余部分相同的改进。
Object
Function
apply
call
对于它的价值,您仍然可以在具有一点魔力的Function.prototype方法上使用一些方法:consolebind()
Function.prototype
bind()
var log = Function.prototype.bind.call(console.log, console); log.apply(console, ["this", "is", "a", "test"]); //-> "thisisatest"