zoukankan      html  css  js  c++  java
  • 经典问题:向setTimeout传递函数参数

    经典问题:向setTimeout传递函数参数     选择自 fason 的 Blog


    也许你过去在setTimeout中传参数一直是这样

    setTimeout("pass(" + argu + ")",1000)

    这样只能传字符串,对传递object就无能为力了,需要大费文章.然而别忘了,第一个参数还可以是function!!!

    看以下代码实现向里面的function 传参数

    <script type="text/javascript">
    var _st = window.setTimeout;
    window.setTimeout = function(fRef, mDelay) {
     if(typeof fRef == 'function'){
      var argu = Array.prototype.slice.call(arguments,2);
      var f = (function(){ fRef.apply(null, argu); });
      return _st(f, mDelay);
     }
     return _st(fRef,mDelay);
    }

    function test(x){
     alert(x);
    }
    window.setTimeout(test,1000,'fason');
    </script>

    怎样?是不是很方便了?代码其实就很简单,重载了一下window.setTimeout,用apply去回调前面的function.

    还没有用过apply,call的可以去查资料,发现版本不够的看我低版本的实现方法http://blog.csdn.net/fason/archive/2004/07/30/apply_call.aspx

    另外需要知道的是,NS环境下,后面的参数确实是来传给前面的函数的,IE烂,没有实现~~~~~~~~~~~~~


  • 相关阅读:
    Pandas获取本地csv文件到内存中
    波士顿房价数据集可视化
    tensorflow之数据集调用(波士顿房价数据集)
    查单词
    censoring
    字符串大师
    Parity game
    前缀和
    String
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/Koy/p/454753.html
Copyright © 2011-2022 走看看