猿问

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;
        };
    }
};


胡说叔叔
浏览 564回答 1
1回答

饮歌长啸

当一个东西很复杂的时候,你可以把它分解开分析:alert(object.getNameFunc()())等价于:var fn = object.getNameFunc(); alert(fn());这样是不是就清晰了,第一次调用返回的就是最内部的那个函数,记为fn。第二次调用就是在调用这个fn。至于为什么得到那个结果,你需要理解的知识点是:函数中this的确定问题。请参考我专栏中关于this的那篇文章,或者网上搜一下有很多此类文章。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答