Нашел вот такой кусок кода. 
var Logger = {};
Logger.log = function () {
    if (window.console && console.log) {
        try {
            console.log.apply(console, arguments)
        } catch (e) {
            console.log(Array.slice(arguments))
        }
    }
};
У меня возникли следующие вопросы:
1. Зачем проверять window.console, разве нельзя обойтись просто проверкой console.log?
2.  console.log.apply(console, arguments) по сути ничего не меняет? Ведь this передается тот же console что и был. Тогда смысл в функции Logger.log, если она предположительно тоже самое делает что и console.log? Может я что-то не уловил?