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

在线等,挺急的!js闭包问题?这两段代码分别输出什么?为什么?

在线等,挺急的!js闭包问题?这两段代码分别输出什么?为什么?

侃侃尔雅 2019-10-19 09:29:49
varname="TheWindow";  varobject={    name:"MyObject",    getNameFunc:function(){      returnfunction(){        returnthis.name;      };    }  };  alert(object.getNameFunc()());varname="TheWindow";  varobject={    name:"MyObject",    getNameFunc:function(){      varthat=this;      returnfunction(){        returnthat.name;      };    }  };  alert(object.getNameFunc()());
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

第一个输出TheWindow,谁调用这个函数this就指向谁,object.getNameFunc()()先执行object.getNameFunc()完这个后,再执行后面的函数,这时候this指向window
第二个输出MyObject,闭包就是能够读取其他函数内部变量的函数,闭包最大一个特点就是能够保存变量,第二种写法实际上就是个闭包,that指向object,在object.getNameFunc()执行完后,that还是保存着对object的引用,所以第二个输出MyObject
仅是个人理解哈~
                            
查看完整回答
反对 回复 2019-10-19
?
隔江千里

TA贡献1906条经验 获得超10个赞

闭包里面returnfunction返回的this指向window,而getNameFunc:function内部的this指向的是自身。所以得到这个结果。
                            
查看完整回答
反对 回复 2019-10-19
  • 2 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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