В Internet Explorer 9 (и 8) consoleобъект открывается только тогда, когда инструменты разработчика открыты для определенной вкладки. Если вы скрываете окно инструментов разработчика для этой вкладки, consoleобъект остается открытым для каждой страницы, на которую вы переходите. Если вы открываете новую вкладку, вы также должны открыть инструменты разработчика для этой вкладки, чтобы consoleобъект был доступен.
consoleОбъект не является частью любого стандарта и является продолжением к модели объекта документа. Как и другие объекты DOM, он считается хост-объектом и не обязан наследоваться Object, равно как и его методы Function, как это делают нативные функции и объекты ECMAScript. Это причина applyи callне определены в этих методах. В IE 9 большинство объектов DOM были улучшены для наследования от собственных типов ECMAScript. Поскольку инструменты разработчика считаются расширением IE (хотя и встроенным расширением), они явно не получили тех же улучшений, что и остальная часть DOM.
Для чего бы это ни стоило, вы все равно можете использовать некоторые Function.prototypeметоды в consoleметодах с небольшим количеством bind()волшебства:
var log = Function.prototype.bind.call(console.log, console);
log.apply(console, ["this", "is", "a", "test"]);
//-> "thisisatest"