var i=0;
var t={
a:function(){
this.timer=setInterval(this.b,30);
},
b:function(){
if(i++<1){
console.log(this);
}
}
};
t.a();
输出的是
[circular object global]
这是为什么
var i=0;
var t={
a:function(){
this.timer=setInterval(this.b,30);
},
b:function(){
if(i++<1){
console.log(this);
}
}
};
t.a();
输出的是
[circular object global]
这是为什么
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
输出的内容来自
console.log(this);
而此处的
this
自然是全局的this
咯。你把
t.b
作为参数传给了setInterval
,传进去的就仅仅是t.b
这个函数。也就是说相当于之后调用时也就相当于每30毫秒执行一次
func();
那么this当然是未有指定的
如果你希望那个
this
指代的是t
,那么就可以setInterval(this.b.bind(this), 30)
或者为了方便你理解原理,如果你希望
this
指代的是t
,你可以