修改定时器this指向,三种技巧

·  阅读 258

#定时器的使用方法:定时器(fn,delay)都是知道的,但是在fn中使用this,都是window。 首先定时器是一个函数,而且是内置函数,初始化之后就有的,所以是全局下面的函数。 回忆一下:是不是还记得,函数如果被直接调用,this肯定就是window。下面是修改技巧 ##第一种:先保存下来,利用作用域链

    var obj = {
    dd:666,
    tt(){
        //来了来了
        that = this
        setTimeout(function(){
            console.log(that.dd)
        },1000)
    }
}
obj.tt()
复制代码

##第二种:使用bind,不可使用call,apply,因为需要返回一个函数

var fn = function(){
    console.log(that.dd)
}
var obj = {
    dd:666,
    tt(){
        //来了来了
        setTimeout(fn.bind(this),1000)
    }
}
obj.tt()
复制代码

##第三种 箭头函数,使用箭头函数时,函数是无this的,会外围寻找

var obj = {
    dd:666,
    tt(){
        setTimeout(()=>{
            console.log(this.dd)
        },1000)
    }
}
obj.tt()
复制代码
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改