Javascript 箭头函数 this绑定的问题

functiontest1(){
this.a=55;
return{
a:10,
b:()=>{returnthis;}
};
}
functiontest2(){
this.a=55;
return{
a:10,
b:function(){returnthis;}
};
}
varf1=newtest1();
varf2=newtest2();
console.log(f1.b());//输出test1{a:55}
console.log(f2.b());//输出{a:10,b:[Functionb]}
不理解的一点在于:箭头函数是词法作用域,但是返回的时候莫名奇妙绑定到了构造函数上,按道理不应该也是在生成的对象上嘛
噜噜哒
浏览 736回答 2
2回答

开心每一天1111

你只需要理解是箭头函数跟普通函数不一样,而不是箭头函数里的this跟普通函数里的this(性质)不一样。箭头函数中的this只不过是跳过了箭头函数而已,不是静态绑定。

万千封印

对于一般的函数来说,this是动态绑定的,也就是谁调用就指向谁。而箭头函数有一个特点,就是内部this指向父级作用域中的this,实际上是因为箭头内部没有自己的this,导致内部的this就是外层代码的this。这更类似于闭包,调用了父级作用域定义的变量。这样的话,不论你在什么时候调用都是声明时的指向。也就是问题中输出的"{a:55}"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript