javascript - js闭包的一个小例子,没看懂,哪位大神帮我看看谢谢啦?
本文介绍了javascript - js闭包的一个小例子,没看懂,哪位大神帮我看看谢谢啦?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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;
};
}
};
解决方案
当一个东西很复杂的时候,你可以把它分解开分析:
alert(object.getNameFunc()())
等价于:
var fn = object.getNameFunc();
alert(fn());
这样是不是就清晰了,第一次调用返回的就是最内部的那个函数,记为fn。第二次调用就是在调用这个fn。
至于为什么得到那个结果,你需要理解的知识点是:函数中this的确定问题。请参考我专栏中关于this的那篇文章,或者网上搜一下有很多此类文章。
这篇关于javascript - js闭包的一个小例子,没看懂,哪位大神帮我看看谢谢啦?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文