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