明凯博客

关注网站技术,一个特立独行的程序员

关于setTimeout/setInterval的第三个参数

setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。

它们在非IE(6-9)浏览器中还可以如下使用

1
2
3
setTimeout(function(obj){
    alert(obj.a);
}, 2000, {a:1});

用法:

1
2
3
4
5
6
var arr = [1,9,2,8,3,7,4,6,4,5];
     for(var i = 0, len = arr.length; i < len; i++){
         setTimeout(function(x){
             console.log(x);
         },arr[i],arr[i]);
     }

你可以传多个参数给回调函数,如下

1
2
3
4
setTimeout(function(a, b){
    alert(a);
    alert(b);
}, 2000, 1,2);

如果有第三个参数,某些情况下的调用就可以方便的处理回调函数中当前对象的问题,写起来好看点。

扩展一下Function,增加一个延时调用(参考而已):

1
2
3
4
5
6
7
8
9
10
Function.prototype.delay = function(){
        var args = Array.prototype.slice.call(arguments,0);
        setTimeout(function(fn){
            fn.apply('',args.slice(1));
        },args[0],this);
    }
    var fn = function(x){
        alert(x)
    };
    fn.delay(1000,'xesam');

关于回调模拟进度条的例子:

代码预览

,

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注