var color = "red";
var obj = {
color: "pink",
getColor: function() {
return function() {
return this.color
}
}
}
alert(obj.getColor()()); //弹出red
为什么这个匿名函数会属于window对象?
JS高程上说匿名函数的执行环境具有全局性?我取匿试了试了下
最里面的函数还是属于winddow对象,弹出的还是red。
这个, 属于闭包中函数上下文的内容.
要深究他的原因, 其实也比较简单.
this的意思, 就是函数执行时的上下文, 注意是执行时的上下文, 跟函数定义没有关系.
getColor函数返回了这个匿名函数, 匿名函数再执行.
我们理一下:
getColor被obj对象调用.
getColor返回的函数继续执行.
由于此时函数直接在全局环境中执行, 那么他的this对象就指向了window对象. 必然弹出red.!