使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);}