后三句的疑问

来源:5-7 选择练习

Aurora_Meteor

2020-05-07 19:23:21

我明白第一个f的结果是把foo函数的指向变成了对象{id:1},然后foo里面是三个箭头函数,箭头函数没有自己的this,它们的this指向所处的环境,所以第一行执行以后它们的指向就是{id:1}了。

开始为什么下面三行的call就没用了呢?为什么再执行它们的this都还是{id:1}呢?和下面几行有执行函数()有关吗?

写回答

2回答

好帮手慕夭夭

2020-05-08

同学你好,函数foo绑定了作用域之后,就不能再修改了。当第一次调用foo绑定了{id:1},箭头函数在创建时,绑定的就是当前作用域也就是foo的this,即{id:1}。后面三句在调用箭头函数时,传递的this指向并不会更改它的this指向。重新理解一下哦。

http://img.mukewang.com/climg/5eb4c74009bbf89907960258.jpg

祝学习愉快 ~

0
hurora_Meteor
h 1、call是执行一次并且改变this指向,而不是只改变this指向? 2、所以f是foo函数的第一次return结果,也就是里面有两层return的箭头函数? 3、然后因为foo.call使foo函数的this改变为{id:1},而f是箭头函数,它没有自己的this,所以它始终指向foo的this{id:1}? 4、而f里面的return结果都是箭头函数,它们也都没有自己的this,所以向外找this,直到f的this{id:1},所以里面箭头函数的this都是f的this{id:1};而且因为它们自身是没有this的,所以后三句使用call方法改变this不会生效,它们的this始终都是f的this{id:1}? 请问我的这几点理解是否正确?
h020-05-08
共1条回复

好帮手慕夭夭

2020-05-08

同学你好,可以这样理解哦。祝学习愉快 ~

0

0 学习 · 10739 问题

查看课程