function Test(){ this.func1=function(){ console.log("func1") } this.func2=function(){ console.log("func2") } this.func3=function(){ console.log("func3") } this.all=function(){ console.log(this) this.func1() this.func2() this.func3() }}var test=new Test()test.all()//这打印出的this就是正确的对象,可正常调用到func1,func2,func3setInterval(test.all,1000)//这打印出的this是window,理所当然调不到函数请问在setInterval(test.all,1000)语句中,为什么this突然指向了window?我现在写的代码需要setInterval(test.all,1000)这语句,请问如何使着代码正常运行?求大神解答,很是疑惑
2 回答
萧十郎
TA贡献1815条经验 获得超13个赞
你的setInterval(test.all,1000) 相当于
setInterval(function(){
console.log(this)
this.func1()
this.func2()
this.func3()
},1000)
这里已经脱离test的上下文了,所以this指向window
要想正常执行的话,就要把test上下文传进去:这样
setInterval(test.all.apply(test),1000) 就可以了
添加回答
举报
0/150
提交
取消