首页 > 其他 > 详细

给setTimeout和setIntreval函数添加回调参数

时间:2014-03-11 13:58:00      阅读:437      评论:0      收藏:0      [点我收藏+]

setTimeout和setInterval是两个很常见的计时函数。在以前,他们只接收两个参数,我们无法直接向他们的回调函数中添加参数,如果需要实现添加多个参数,可以在外层多嵌一层来实现类似的功能。现代浏览器对这两个函数支持更多参数,这些参数会在回调函数被调用时原原本本的的传回去。

bubuko.com,布布扣
<script>
setTimeout(function(a,b,c){
  console.log(a,b,c);
},1000,3.14,true,"test");
</script>
bubuko.com,布布扣

bubuko.com,布布扣

低版本IE不支持这个特性,但可以复写这两个函数来实现,虽然要牺牲点性能:

bubuko.com,布布扣
var isIE = navigator.userAgent.match(/MSIE (\d+)/i)[1];
if(isIE < 10) {
  //计时器方法回调参数兼容
  (function() {
    var i, s = ["setTimeout", "setInterval"];
    for(i=0; i < s.length; i++)(function(name) {
      var func = window[name];
      window[name] = function(callback,delay) { //覆写函数
        //取出从第三个参数开始的参数
        var args = Array.prototype.slice.call(arguments, 2);
        args.length ? func(function() {
          callback.apply(null, args);
        }, delay) : func(callback, delay);
      };
    })(s[i]);
  })();
};
//测试
setTimeout(function(a, b, c) {
  alert(a);
  alert(b);
  alert(c);
}, 1000, 3.14, true, "test");
bubuko.com,布布扣

给setTimeout和setIntreval函数添加回调参数,布布扣,bubuko.com

给setTimeout和setIntreval函数添加回调参数

原文:http://www.cnblogs.com/fengyuqing/p/setTimeout_and_setInterval.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!