переопределение глобальной функции в JavaScript

Я пытаюсь добавить свою собственную обработку ошибок в функцию JavaScript setTimeout. Следующий код прекрасно работает в Chrome:

var oldSetTimeout = window.setTimeout;
window.setTimeout = function setTimeout(func, delay) {
    var args = Array.prototype.slice.call(arguments, 0);
    args[0] = function timeoutFunction() {
        var timeoutArgs = Array.prototype.slice.call(arguments, 0);
        try {
            func.apply(this,timeoutArgs);
        }
        catch (exception) {
            //Do Error Handling
        }
    }
    return oldSetTimeout.apply(this, args);
}

Но в IE7 это превращается в рекурсивную функцию. По какой-то причинеoldSetTimeout устанавливается на новую функцию.

Какие-либо предложения?


примечание стороны: Да, мне нужно сделать это таким образом. Я использую кучу сторонних библиотек, каждая из которых плохо работает с setTimeout, поэтому я не могу просто изменить вызовы на setTimeout.

Ответы на вопрос(2)

Ваш ответ на вопрос