为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 箭头函数 this绑定的问题

Javascript 箭头函数 this绑定的问题

拉风的咖菲猫 2019-03-08 13:11:38
function test1(){    this.a=55;    return {        a:10,        b:()=>{return this;}    };}function test2(){    this.a=55;    return{        a:10,        b:function(){return this;}    };}var f1=new test1();var f2=new test2();console.log(f1.b());//输出test1 {a:55}console.log(f2.b());//输出{a:10,b:[Function b]}不理解的一点在于:箭头函数是词法作用域,但是返回的时候莫名奇妙绑定到了构造函数上,按道理不应该也是在生成的对象上嘛
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

你只需要理解是箭头函数跟普通函数不一样,而不是箭头函数里的 this 跟普通函数里的 this (性质)不一样。

箭头函数中的 this 只不过是跳过了箭头函数而已,不是静态绑定。


查看完整回答
反对 回复 2019-03-15
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

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


查看完整回答
反对 回复 2019-03-15
  • 2 回答
  • 0 关注
  • 416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信