正在回答
同学你好,这里主要是call的使用。之前讲过call方法,视频链接为:https://class.imooc.com/lesson/2124#mid=50534
同学可以再回顾一下。老师再简单为同学介绍一下:
函数可以使用“名字()”的形式调用:

此时this指向window:

还可以使用call方法来调用函数,其中call的第一个参数,可以用来改变this的指向,如下


所以练习题中:
1、var f = foo.call({id:1})含义是:调用foo,并把this指向{id:1},foo调用之后返回值第一个return的箭头函数,所以此时的f表示返回的第一个箭头函数,如下:

2、var t1 = f.call({id:2})()()这句代码含义是:f表示上一句使用call方法调用foo函数返回的箭头函数, f.call({id:2})表示通过调用call方法调用函数。返回结果是里面的箭头函数,f.call({id:2})()表示调用执行f.call({id:2})后返回的函数,f.call({id:2})()() 表示调用执行f.call({id:2})()后返回的函数。老师简单画图标注了一下,同学可以结合下图理解:

由于foo调用之后return返回值是箭头函数 ,下面的以此类推,调用函数后返回的都是箭头函数,所以即使使用call传入{id:2}对象,this指向的也是foo函数中的this,也就是{id:1}
3、后面的几句代码也是同样的道理,返回的都是箭头函数,this都是指向foo函数中的this,所以最终只有一个this。
祝学习愉快!

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星