varname="TheWindow"; varobject={ name:"MyObject", getNameFunc:function(){ returnfunction(){ returnthis.name; }; } }; alert(object.getNameFunc()());varname="TheWindow"; varobject={ name:"MyObject", getNameFunc:function(){ varthat=this; returnfunction(){ returnthat.name; }; } }; alert(object.getNameFunc()());
2 回答

交互式爱情
TA贡献1712条经验 获得超3个赞
第一个输出TheWindow,谁调用这个函数this就指向谁,object.getNameFunc()()先执行object.getNameFunc()完这个后,再执行后面的函数,这时候this指向window第二个输出MyObject,闭包就是能够读取其他函数内部变量的函数,闭包最大一个特点就是能够保存变量,第二种写法实际上就是个闭包,that指向object,在object.getNameFunc()执行完后,that还是保存着对object的引用,所以第二个输出MyObject仅是个人理解哈~

一只甜甜圈
TA贡献1836条经验 获得超5个赞
闭包里面returnfunction返回的this指向window,而getNameFunc:function内部的this指向的是自身。所以得到这个结果。
添加回答
举报
0/150
提交
取消