setInterval中传递参数

在JS中不管是setTimeout仍是setInterval,在使用函数名做为调用句柄时都不能带参数,而在许多场合必需要带参数,这就须要想方法解决。app

1、采用字符串形式:——(缺陷)参数不能被周期性改变函数

setInterval("foo(id)",1000);
2、匿名函数包装prototype

window.setInterval(function()字符串

    {io

foo (id);function

    }, 1000);匿名函数

   这样就能够周期性执行foo(id)这个函数,并且把变量id传递进去;变量


3、定义返回无参函数的函数方法

function foo(id)im

{

   alert(id);

}

function _foo(id)

{

return function()

{

foo(id);

}

}

window.setInterval(_foo(id),1000);

这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不须要使用参数。在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。


4、修改setInterval

function foo(id)

{

alert(id);

}

var _sto = setInterval;  

window.setInterval = function(callback,timeout,param)

{  

var args = Array.prototype.slice.call(arguments,2);  

var _cb = function()

{  

callback.apply(null,args);  

}   

_sto(_cb,timeout);  

}

window.setInterval(hello,3000,userName);

以上的全部方法也适合setTimeout。

相关文章
相关标签/搜索