老师,题目里面的this能看懂只有1个this,下面的var这里看迷糊了。​

老师,题目里面的this能看懂只有1个this,下面的var这里看迷糊了。​

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,这里主要是call的使用。之前讲过call方法,视频链接为:https://class.imooc.com/lesson/2124#mid=50534 

同学可以再回顾一下。老师再简单为同学介绍一下:

函数可以使用“名字()”的形式调用:

http://img1.sycdn.imooc.com//climg/5ff1a22409feb90806990251.jpg

此时this指向window:

http://img1.sycdn.imooc.com//climg/5ff1a2390962f6f511630103.jpg

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

http://img1.sycdn.imooc.com//climg/5ff1a24d090e5b6e09840429.jpg

http://img1.sycdn.imooc.com//climg/5ff1a2550951670606320180.jpg

所以练习题中:

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

http://img1.sycdn.imooc.com//climg/611b7f8a099eda3c10120650.jpg

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})()后返回的函数。老师简单画图标注了一下,同学可以结合下图理解:

http://img1.sycdn.imooc.com//climg/611b811e09ab2ef620181308.jpg

由于foo调用之后return返回值是箭头函数 ,下面的以此类推,调用函数后返回的都是箭头函数,所以即使使用call传入{id:2}对象,this指向的也是foo函数中的this,也就是{id:1}

3、后面的几句代码也是同样的道理,返回的都是箭头函数,this都是指向foo函数中的this,所以最终只有一个this。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师