首页 新闻 搜索 专区 学院

一个js闭包运行结果 求分析~~

0
悬赏园豆:10 [已解决问题] 解决于 2015-04-02 09:54

在网上看到这样的一个代码,不明白是怎么运行的求大神分析

1、这种情况 答案是The window

var name = "The window";
var object = {
name: "My object",
getNameFunc: function() {
return function() {

return this.name;
};
}
};
alert(object.getNameFunc()());

2、这种情况 答案还是The window

var name = "The window";
var object = {
name: "My object",
getNameFunc: function() {
return function() {

var name="bokeyuan";

return this.name;
};
}
};
alert(object.getNameFunc()());

 

求解析

付威的网络博客的主页 付威的网络博客 | 初学一级 | 园豆:195
提问于:2015-03-26 16:46
< >
分享
最佳答案
0

只有一个知识点,就是函数的作用域是定义时的作用域。
object.getNameFunc(),这个方法返回的是个函数,然后是在window下,那么函数的this就是指window。
如果要测试,可以把return里面的this去掉,这样第一个就会搜索window.name,第二段就会搜索function内部的name。

收获园豆:10
幻天芒 | 高人七级 |园豆:36662 | 2015-03-27 09:32

可第二个的答案也是The window 求指点

付威的网络博客 | 园豆:195 (初学一级) | 2015-03-27 10:32

@OceanHeaven: 同样的理由呀,this代表window,那么this.name,不也是最外面的那个嘛。如果不要this的话,就会是里面的name。

幻天芒 | 园豆:36662 (高人七级) | 2015-03-27 11:04
其他回答(1)
0

是this的问题,已经改变了对象了,js的this和其他语言不太一样

56180825 | 园豆:1524 (小虾三级) | 2015-03-26 20:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册