#定时器的使用方法:定时器(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()