关于this的理解

关于this的理解

问题描述:

    如下为我对this的分析理解,但事实证明我理解的完全不对,还请老师指点

1、b函数中的定义的箭头函数,而箭头函数的this值的是定义时所在的对象,也就是MyObj,输出应该是MyObj中的内容:{ a: [Function: a], b: [Function: b] }

2、a函数中的定义的是非箭头函数,普通函数,此时this就是函数执行过程中自动生成的一个内部对象,当前的对象,只在当前函数内部使用,那不是应该在a函数内部使用吗?输出应该是:

'

console.log('a this:',this) // Myobj

        setTimeout(()=> {

                console.log('timeout this:', this) //MyObj

            }, 100)

'



相关代码:

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

https://img1.sycdn.imooc.com/climg/65b320f40913d14108100129.jpg

正在回答

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

1回答

同学,你好!this指的是定义时所在的对象可以理解为this是继承自父执行上下文中的this。


1、b是箭头函数,this应该指向上下文函数this的指向,箭头函数b所在的对象为MyObj,而MyObj的this是window。所以是{}

2、课程中老师详细的讲解了两种情况,其中第二种情况的解释,可以套用为当a 函数被作为Myobj对象的方法调用时,this 指向那个对象。Myobj 就是那个对象,所以是{ a: [Function: a], b: [Function: b] }

https://img1.sycdn.imooc.com/climg/65b398550908084112270584.jpg

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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