var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object
name不是全局变量么? 外层的name不应该被object中的覆盖么?
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object
name不是全局变量么? 外层的name不应该被object中的覆盖么?
这个正好是全局变量所以弹出the window
在运行的时候this 是window对象.所以this.name,回去调用那个全局的name对象.
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return name;
};
}
};
alert(object.getNameFunc()()); //The Window
this去掉后还是‘The Window’ 好像你的这种解释不太对噢
我是在学习js闭包时碰到的这个例子 上面说理解了这个就真正理解了js的闭包 js闭包小弟基本上懂了
可是小弟愚昧 还是没有理解这个例子啊 苦恼
var object = {
name: "My Object",
getNameFunc: function () {
var name = "test";
return function () {
return name;
};
}
};
alert(object.getNameFunc()()); //The Window
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); // 我以为这个就可以输出‘My Object’了 结果测试是空啊 如果在这个作用域链getNameFunc ()找不到 不是应该继续往上找么?应该能找到object 中的name啊?
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
在return function 中也能取到object中的name属性么
你说的“如果在这个作用域链getNameFunc ()找不到”,是找什么找不到?this肯定是有的
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.object.name;
};
}
};
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return name;
};
}
};
alert(object.getNameFunc()()); //The Window
大侠 怎么这样写 也会输出The Window 把this去掉之后 还是会找到 全局变量name么?