/***********************************
*Author:Java619
*Time:2006-08
************************************/
也许你过去在setTimeout中传参数一直是这样
setTimeout("pass(" + argu + ")",1000)
这样只能传字符串,对传递object就无能为力了,需要大费文章.然而别忘了,第一个参数还可以是function
下面举个实例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 向setTimeout传递函数参数</TITLE>
</HEAD>
<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 hello(x,y)...{
alert(x+" "+y);
}
window.setTimeout(hello,1000,'Hello','Ceun');
</script>
<BODY>
</BODY>
</HTML>现在向setTimeout中传递带参数的函数是不是方便多了,其实就是重载了下window.setTimeout
用apply去回调前面的函数。
本文介绍了一种改进的方法来向setTimeout函数传递带参数的函数。通过重载window.setTimeout并使用apply方法,可以更灵活地传递任意类型的数据,而不仅限于字符串。
671

被折叠的 条评论
为什么被折叠?



