为什么箭头函数this不能获得当前所在的对象呢?

为什么箭头函数this不能获得当前所在的对象呢?

let MyObj={
    a(){
        console.log('a',this)
        setTimeout(()=>{
            console.log('timeout',this)
        },100)

        setTimeout(function f2(){
            console.log('timeout',this)
        },100)
    },
    b:()=>{
        console.log('b',this)
    }
}

a 和 b 不是同为对象MyObj的元素吗?为什么箭头函数b的this不能获得MyObj的对象

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好。箭头函数是没有自己的this的,箭头函数里面的this会继承自外部的this。或者箭头函数中的this就是外层代码块的this。箭头函数b本身所在的对象为MyObj,而MyObj的this是window

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 科伟 #1

    老师,MyObj的this是window 这句不是很理解。那我在 MyObj 对象的外面创建一个变量 a,这个变量相对于 MyObj.b( ) 来说,不是全局变量吗?为什么也访问不到呢?

    let a = 10
    let MyObj={
        b:()=>{
            console.log('b',this.a)
        }
    }


    2021-08-28 11:02:11
  • 同学,你好!window对象表示浏览器中打开的窗口,ES6语法中声明变量使用let,在JS语法中定义变量使用var,可以声明全局变量,将变量a的创建方式修改为var a = 10即可访问到。祝:学习愉快!
    2021-08-28 13:41:51
  • http://img1.sycdn.imooc.com//climg/612a3efa09b40eed06650429.jpg

    老师。。。貌似还是不行,我是不是哪里写错了

    2021-08-28 21:50:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师