素材牛VIP会员
js箭头函数this的指向问题?
 Al***ay  分类:JavaScript  人气:949  回帖:3  发布于6年前 收藏
var a = {
    b: {
        c: {
            d: {
                e: ()=>{console.log(this)} // Window
            }
        }
    }
}

var obj = {
   say: function () {
    console.log(this)
    setTimeout(() => {
        console.log(this)
    });
   }
 }
 obj.say() // obj

为什么第二个会指向obj,而不是window?

 标签:javascript

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv3 码奴
凤***奇 职业无 6年前#1

因为第二个是用obj调用的,调用者是obj
this指向的都是调用者
第一个只是执行了这段代码,但是没有调用者,所以默认就是window
细节可以看看this

Lv4 码徒
go***le 学生 6年前#2

箭头函数中的this值是继承它的外围作用域的,this在没改变的情况下是谁调用指向谁,所以say中的this是指向obj 的,箭头函数中的this继承这个this,故指向obj

Lv1 新人
qi***hu 职业无 6年前#3

箭头函数没有自己的this所以会往外层作用域找

var obj = {
   say: function () {
    console.log(this)//找到了
    setTimeout(() => {
        console.log(this)//没有this向外层找
    });
   }
 }
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取