zoukankan      html  css  js  c++  java
  • 给setTimeout和setIntreval函数添加回调参数

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

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

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

    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");
  • 相关阅读:
    P3811乘法逆元
    P4549裴蜀定理
    备用代码区
    其他板子整理
    DP
    图论板子整理
    约数
    浅谈假学习假努力
    质数
    P1019 单词接龙
  • 原文地址:https://www.cnblogs.com/fengyuqing/p/setTimeout_and_setInterval.html
Copyright © 2011-2022 走看看