经典问题:向setTimeout传递函数参数
生活随笔
收集整理的這篇文章主要介紹了
经典问题:向setTimeout传递函数参数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
經(jīng)典問(wèn)題:向setTimeout傳遞函數(shù)參數(shù)
經(jīng)典問(wèn)題:向setTimeout傳遞函數(shù)參數(shù) 也許你過(guò)去在setTimeout中傳參數(shù)一直是這樣
setTimeout("pass(" + argu + ")",1000)
這樣只能傳字符串,對(duì)傳遞object就無(wú)能為力了,需要大費(fèi)文章.然而別忘了,第一個(gè)參數(shù)還可以是function!!!
看以下代碼實(shí)現(xiàn)向里面的function 傳參數(shù)
<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>
怎樣?是不是很方便了?代碼其實(shí)就很簡(jiǎn)單,重載了一下window.setTimeout,用apply去回調(diào)前面的function.
經(jīng)典問(wèn)題:向setTimeout傳遞函數(shù)參數(shù) 也許你過(guò)去在setTimeout中傳參數(shù)一直是這樣
setTimeout("pass(" + argu + ")",1000)
這樣只能傳字符串,對(duì)傳遞object就無(wú)能為力了,需要大費(fèi)文章.然而別忘了,第一個(gè)參數(shù)還可以是function!!!
看以下代碼實(shí)現(xiàn)向里面的function 傳參數(shù)
<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>
怎樣?是不是很方便了?代碼其實(shí)就很簡(jiǎn)單,重載了一下window.setTimeout,用apply去回調(diào)前面的function.
總結(jié)
以上是生活随笔為你收集整理的经典问题:向setTimeout传递函数参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 常规循环引用内存泄漏和Closure内存
- 下一篇: 刚刚看到网友的签名 飞秋官网下载