js箭头函数this的指向问题?

0 0 javascript
error(*)
error(*)

声望值:177 0人

2019-03-06 15:28:43 提问

关注 0关注

收藏 0收藏, 45浏览

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?

请先 登录 后评论

3个回答

  • セ小猪佩奇107声望 2018-09-25 09:25

    箭头函数没有自己的this所以会往外层作用域找 var obj = { say: function () { console.log(this)//找到了 setTimeout(() => { console.log(this)//没有this向外层找 }); } }
    请先 登录 后评论
  • ㄨ小蜗牛81声望 2018-09-25 09:25

    箭头函数中的this值是继承它的外围作用域的,this在没改变的情况下是谁调用指向谁,所以say中的this是指向obj 的,箭头函数中的this继承这个this,故指向obj
    请先 登录 后评论
  • -II、执念213声望 2018-09-25 09:25

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

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问