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

js闭包的一个小例子,没看懂,哪位大神帮我看看谢谢啦?

js闭包的一个小例子,没看懂,哪位大神帮我看看谢谢啦?

胡说叔叔 2018-08-13 14:09:26
1.为什么运行的最终结果是The Window,而不是My Object?2.为什么alert(object.getNameFunc()())要在getNameFunc后面写两个()括号?每个括号代表什么意思?代码如下:var name = "The Window";    var object = {        name : "My Object",        getNameFunc : function(){        return function(){            return this.name;         };     } };
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

当一个东西很复杂的时候,你可以把它分解开分析:

alert(object.getNameFunc()())

等价于:

var fn = object.getNameFunc();
alert(fn());

这样是不是就清晰了,第一次调用返回的就是最内部的那个函数,记为fn。第二次调用就是在调用这个fn。

至于为什么得到那个结果,你需要理解的知识点是:函数中this的确定问题。请参考我专栏中关于this的那篇文章,或者网上搜一下有很多此类文章。


查看完整回答
反对 回复 2018-09-19
  • 1 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信