在网上看到这样的一个代码,不明白是怎么运行的求大神分析
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()());
求解析
只有一个知识点,就是函数的作用域是定义时的作用域。
object.getNameFunc(),这个方法返回的是个函数,然后是在window下,那么函数的this就是指window。
如果要测试,可以把return里面的this去掉,这样第一个就会搜索window.name,第二段就会搜索function内部的name。
可第二个的答案也是The window 求指点
@OceanHeaven: 同样的理由呀,this代表window,那么this.name,不也是最外面的那个嘛。如果不要this的话,就会是里面的name。
是this的问题,已经改变了对象了,js的this和其他语言不太一样