var color="red";
var obj={
color : "pink", getColor:function(){ return function (){return this.color } } }
alert(obj.getColor()());//弹出red
为什么这个匿名函数会属于window对象?
JS高程上说匿名函数的执行环境具有全局性?我取匿试了试了下
最里面的函数还是属于winddow对象 弹出的还是red。
付费偷看金额在0.1-10元之间
getColor返回的函数继续执行.
要深究他的原因, 其实也比较简单.
你告诉我这个函数是被谁调用的? 是obj吗? 显然不是.
那为何你会觉得他的this要指向obj呢?
此时函数已经执行了, getColor函数的this就指向了obj.
obj.getColor这里调用的时候就是在window里调用的吧 然后你代码里面的是closure function 所以obj里的method调用this会是window
getColor函数返回了这个匿名函数, 匿名函数再执行.
getColor被obj对象调用.
this的意思, 就是函数执行时的上下文, 注意是执行时的上下文, 跟函数定义没有关系.
这个, 属于闭包中函数上下文的内容.
由于此时函数直接在全局环境中执行, 那么他的this对象就指向了window对象. 必然弹出red.!
我们理一下:
一周热门 更多>