##1.1
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function(){
return this.name;
}
}
问:object.getNameFuc()的返回值是什么?
答:”My Object”
##2.1
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function(){
return function(){
return name;
}
}
}
问:object.getNameFuc()()的返回值是什么?
答:”The Window”,因为根据函数的作用域链(闭包本身->然后是闭包外面的函数->window)找name,但是object.getNameFunc中并没有name变量,所以只能找到window中的name,不要被object.name中的name迷惑了.
##3.1
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function(){
return function(){
return this.name;
}
}
}
问:object.getNameFuc()()的返回值是什么?
答:还是”The Window”,因为闭包的调用者或者是执行者永远都是window,所以this也就是window了.