在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小时内删除。
发表评论