javascript - setInterval里面this指向的是window,下面的函数怎么理解

查看:89
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆