关于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()
正在回答
同学,你好!this指的是定义时所在的对象可以理解为this是继承自父执行上下文中的this。
1、b是箭头函数,this应该指向上下文函数this的指向,箭头函数b所在的对象为MyObj,而MyObj的this是window。所以是{}
2、课程中老师详细的讲解了两种情况,其中第二种情况的解释,可以套用为当a 函数被作为Myobj对象的方法调用时,this 指向那个对象。Myobj 就是那个对象,所以是{ a: [Function: a], b: [Function: b] }
祝学习愉快~
- 参与学习 人
- 提交作业 16247 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星