javascript - setInterval里面this指向的是window,下面的函数怎么理解
本文介绍了javascript - setInterval里面this指向的是window,下面的函数怎么理解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
function Aaa(){
this.a = 12;
setInterval(this.show,1000);
}
Aaa.prototype.show = function(){
console.log(this.a);
}
var a = new Aaa();
按照理解window里没有show的方法,结果打印出来的是a对象,理解不了,求大神指点
解决方案
setInterval里面的this指向的是window对象。
准确说应该是setInterval第一个回调函数运行时,内部上下文this, 而不是传参时那个this。
// this指向当前上下文
setInterval(this.show, 1000)
// this指向window
setInterval(function(){
this.show();
}, 1000);
更正一下其中的错误,
setInterval(this.show, 1000) // 这个this指向当前上下文没问题
// 等价于
setInterval(function(){
console.log(this.a);
//这里的this还是指向window 实际输出的是window.a
// 前面定义时var a = new Aaa()被误导了
// 修改一下变量名 var aa = new Aaa(); 应该输出undefined;
}, 1000)
这篇关于javascript - setInterval里面this指向的是window,下面的函数怎么理解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文