ES6的箭头函数的this指向

consto1={p1:'a',p2:'b',m1:()=>this.p1,}console.log(o1.m1());为什么这个输出是undefined,难道这里的th... const o1 = {
p1: 'a',
p2: 'b',
m1: () => this.p1,
}

console.log(o1.m1());
为什么这个输出是undefined,难道这里的this不是指向o1吗?
假如我把m1方法改写为:() => this,
最后输出是一个空对象{},不是说箭头函数内部this是继承外部this,这个空对象是哪里来的?实在不好理解,希望有大神帮忙解释下!
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
也许是真的961
2018-01-03 · TA获得超过2783个赞
知道小有建树答主
回答量:4785
采纳率:10%
帮助的人:147万
展开全部
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作Generator函数。
上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。
function foo() {
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木吉他1997
2018-08-02
知道答主
回答量:2
采纳率:0%
帮助的人:999
展开全部
对象里面的this是指向外面,所以你里面箭头函数this还是对象的外面 所以 undefind
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式