pmailer1976, если я верно понял вопрос, то вместо code можно передать анонимную функцию в пределах вызова, а можно ссылкой на уже заранее определённую функцию. Ниже пример. От себя добавил небольшие модификации:
1) Вместо подмены свойства window "спрятал" setTimeout в анонимной функции внутрь переменной, которая недоступна в остальном коде
2) Вызов setTimeout обернул в apply, так как в современных браузерах функция setTimeout имеет более 2-ух параметров:
var timeoutID = window.setTimeout(func, [, delay, param1, param2, ...]);
После указания задержки можно передать параметры, которые должны попасть в функцию вызова.
https://developer.mozilla.org/ru/docs/W … setTimeout
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
(function(){
// Hiding setTimeout to fn
var fn = window.setTimeout
window.setTimeout = function(){
return fn.apply(this,arguments)
}
})();
// Anonymous call
var tid = setTimeout(function(){
alert('arguments passed to anonymous function: ' + Array.prototype.join.call(arguments, ','));
},1000,'param1','param2','param3')
// calling predefined function
function test(){
alert('function test called with params: ' + Array.prototype.join.call(arguments, ','));
}
var tid = setTimeout(test,1000,'param1','param2','param3')
</script>
</head>
</html>
P.S Единственное неудобство - возникает проблема с пробросом контекста this при такой конструкции. В той же статье ниже про это рассказано подробнее.
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !