解决setTimeout传参类型的问题

本文介绍了一种改进后的window.setTimeout方法,该方法通过使用apply回调解决了原始方法在传递Object类型参数时存在的局限性。

原文链接:http://blog.163.com/leijiangjiahe@126/blog/static/121546792009713112844520/

 

window.setTimeout   方法是用来延迟执行某段函数(方法)的。但他对调用指定的方法并传参寸在一定缺陷。一般直接传参,只能传入字符传之类的参数,但对于Object类型的就无法直接传入,我的方法就是 重写window.setTimeout方法,利用apply回掉,进行传参,具体如下:


 <script type="text/javas
cript">
var _st = window.setTimeout;
//fRef 是test函数,mDelay是时间
window.setTimeout = function(fRef, mDelay) {
   if(typeof fRef == 'function'){ 
       var argu = Array.prototype.slice.call(arguments,2); 
       alert("argu "+argu);
       var f = (
            function(){
                fRef.apply(null, argu);
            }); 
       return _st(f, mDelay);
    }
    return _st(fRef,mDelay);
}
function test(x,y,z){
    alert(x+"  "+y+" "+z);
}
//第一个参数是要执行的函数,第二个参数是间隔时间,后面的参数是要传入的内容
window.setTimeout(test,1000,document.getElementById("d"),'abc','123');
</script>

非常好用~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值