在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;
timeout was reachedwindow.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)  structor.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  +=  "\n\n"
for  (i  =0  ;  i  <  numargs;  i++){            //  获取参数内容。
s  +=  "    Arg  "  +  i  +  "  =  "  +  arguments[i]  +  "\n";
}
return(s);                                                    //  返回参数列表。
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。