zoukankan      html  css  js  c++  java
  • 在setTimeout里面传递参数

    怎么在setTimeout里面传递参数?
     

     <script>   
      var   _st   =   window.setTimeout;   
      window.setTimeout   =   function(fRef,   mDelay)   {   
      if(typeof   fRef   ==   'function'){   
      var   argu   =   Array.prototype.slice.call(argument,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>   

    ---------------------------------------------------------
    嗯想了出来,不用全局变量,当然用局部变量了。   
      

    <script>   
      var   _st   =   window.setTimeout;   
      window.setTimeout   =   function(fRef,   mDelay)   {   
      if(typeof   fRef   ==   'function'){   
      for   (var   argu=[],i=2;i<arguments.length;i++)argu[i-2]=arguments[i];   
      var   f   =   function(){   
      if   (!   emu)   var   emu   =   argu;   
      for   (var   i=0,rs=[];i<emu.length;i++)   rs[i]="emu["+i+"]";   
      eval   ("fRef("+rs.join()+")");   
      };   
      return   _st(f,   mDelay);   
      }   
      return   _st(fRef,mDelay);   
      }   
        
      function   test(){   
      for   (var   i=0;i<arguments.length;i++)   
      alert(arguments[i]);   
      }   
      window.setTimeout(test,1000,'fason',window,123,[5,6,7],new   Object());   
      </script>   


    ----------------------------------------------------
     

     Function.prototype.apply   =   function   (obj,   argu)   {   
      if   (obj)   obj.constructor.prototype._caller   =   this;     
      var   argus   =   new   Array();   
      for   (var   i=0;i<argu.length;i++)   
      argus[i]   =   "argu["   +   i   +   "]";   
      var   r;   
      eval("r   =   "   +   (obj   ?   ("obj._caller("   +   argus.join(",")   +   ");")   :   ("this("   +   argus.join(",")   +   ");")));   
      return   r;   
      };   
      Function.prototype.call   =   function   (obj)   {   
      var   argu   =   new   Array();   
      for   (var   i=1;i<arguments.length;i++)   
      argu[i-1]   =   arguments[i];   
      return   this.apply(obj,   argu);   
      };                 


    ---------------------------------

    微软的一个文档中写的。   
        
      arguments   属性   
      为当前执行的   function   对象返回一个arguments   对象。   
        
      function.arguments   
        
      function   参数是当前执行函数的名称,可以省略。     
        
      说明   
      通过   arguments   属性,函数可以处理可变数量的参数。   arguments   对象的   length   属性包含了传递给函数的参数的数目。对于arguments   对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。   
        
      示例   
      下面的例子说明了   arguments   属性的用法:   
        

    function   ArgTest(){   
            var   i,   s,   numargs   =   arguments.length;   
            s   =   numargs;       
            if   (numargs   <   2)   
                  s   +=   "   argument   was   passed   to   ArgTest.   It   was   ";   
            else   
                  s   +=   "   arguments   were   passed   to   ArgTest.   They   were   "   ;   
            for   (i   =   0;   i   <   numargs;   i++)   
                  {   
                        s   +=   arguments[i]   +   "   ";   
                  }   
            return(s);   
      }   


      -------------------------------------------   
      arguments   对象   
      该对象代表正在执行的函数和调用它的函数的参数。   
        
      [function.]arguments[n]   
        
      参数   
      function   
        
      可选项。当前正在执行的   Function   对象的名字。   
        
      n   
        
      必选项。要传递给   Function   对象的从0开始的参数值索引。   
        
      说明   
      不能显式创建   arguments   对象。arguments   对象只有函数开始时才可用。函数的   arguments   对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引   n   实际上是   arguments   对象的   0…n   属性的其中一个参数。   
        
      示例   
      下面的示例演示了   arguments   对象的用法。   
        

     function   ArgTest(a,   b){   
            var   i,   s   =   "The   ArgTest   function   expected   ";   
            var   numargs   =   arguments.length;           //   获取被传递参数的数值。   
            var   expargs   =   ArgTest.length;               //   获取期望参数的数值。   
            if   (expargs   <   2)   
                  s   +=   expargs   +   "   argument.   ";   
            else   
                  s   +=   expargs   +   "   arguments.   ";   
            if   (numargs   <   2)   
                  s   +=   numargs   +   "   was   passed.";   
            else   
                  s   +=   numargs   +   "   were   passed.";   
            s   +=   "
    
    "   
            for   (i   =0   ;   i   <   numargs;   i++){             //   获取参数内容。   
            s   +=   "     Arg   "   +   i   +   "   =   "   +   arguments[i]   +   "
    ";   
            }   
            return(s);                                                     //   返回参数列表。   
      }   


     

  • 相关阅读:
    Java排序算法总结(转载)
    Java基础—数组(转载)
    Java基础—注解(转载)
    Java基础—枚举
    JVM虚拟机—JVM的类加载机制
    三,memcached服务的两种访问方式
    二,windows下安装memcached服务
    一,memcached的基本概念
    七,apache配置域名
    六,apache修改默认根文件路径
  • 原文地址:https://www.cnblogs.com/focus_dada/p/3267792.html
Copyright © 2011-2022 走看看