给定时器settimeout、setInterval调用传接参数

给定时器settimeout、setInterval调用传递参数

使window.setTimeout/window.setInterval执行带参数的函数的方式(以setTimeout为例):

1.使用字符串形式.

如:window.setTimeout("alert('ok')",1000);

      或

    var msg = "ok";
    window.setTimeout("alertMsg(msg)", 1000);
    function alertMsg(pmsg) {
        alert(pmsg);
    }

2.借助嵌套匿名函数.

如:window.setTimeout(helpFn("ok"), 1000);
    function helpFn(pmsg) { return function() { alert(pmsg); } }

3.修改原 window.setTimeout

如:

//*=============================================================
//*   功能: 修改 window.setTimeout,使之可以传递参数和对象参数   
//*   方法: setTimeout(回调函数,时间,参数1,,参数n)  参数可为对象:如数组等
//*============================================================= 

    window.setTimeout = function(callback, timeout, param) {
        var args = Array.prototype.slice.call(arguments, 2);
        setTimeout(function() { callback.apply(null, args); }, timeout)
    }
    window.setTimeout(alertMsg, 1000, "ok");
    function alertMsg(pmsg) {alert(pmsg);}