var i=0;var t={
a:function(){ this.timer=setInterval(this.b,30);
},
b:function(){ if(i++<1){
console.log(this);
}
}
};
t.a();
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
输出的内容来自console.log(this);
而此处的this
自然是全局的this
咯。
你把t.b
作为参数传给了setInterval
,传进去的就仅仅是t.b
这个函数。也就是说相当于
var func = t.b;setInterval(func, 30);
之后调用时也就相当于每30毫秒执行一次func();
那么this当然是未有指定的
如果你希望那个this
指代的是t
,那么就可以setInterval(this.b.bind(this), 30)
或者为了方便你理解原理,如果你希望this
指代的是t
,你可以
var func = function() { t.b(); } setInterval(func, 30);
添加回答
举报
0/150
提交
取消