老师这里没明白return new UserFactory(role);

老师这里没明白return new UserFactory(role);

为什么实例化调用this会指向UserFactory

正在回答

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

1回答

同学你好,具体可以参考如下解析:

1、在全局下调用UserFactory函数,也就是说方法中的this一开始指向window

http://img1.sycdn.imooc.com//climg/60cffc25092df29a06750172.jpg

else语句中通过new关键字调用UserFactory函数实例化一个对象(相当于再次调用了UserFactory函数),这时候this指向UserFactory实例对象,满足if语句,调用相应的方法,实例化为对象并返回

http://img1.sycdn.imooc.com//climg/60cffcce09e306ec08160518.jpg

可以输出this查看结果,如下:

http://img1.sycdn.imooc.com//climg/60da806909ca600e06210571.jpg

一开始this指向window,后面实例化再次调用后指向UserFactory实例对象,如下:

http://img1.sycdn.imooc.com//climg/60da80700954aee311790228.jpg

祝学习愉快~

  • 慕UI4313976 提问者 #1

    在全局下调用,this指向window,这里我能明白,window对象不是工厂方法的的实例。r执行else的return,

    new UserFactory(role)这里不明白指向。

    2021-07-20 14:16:04
  • 好帮手慕慕子 回复 提问者 慕UI4313976 #2

    同学你好,因为js语法中规定,使用new关键字调用构造函数后,函数内部的this指向实例化对象。所以return new UserFactory(role) 这句代码使用new关键字调用UserFactory函数后,函数内部的this指向UserFactory实例化对象。

    祝学习愉快~

    2021-07-20 14:33:18
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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