<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
showCloseButton="true" layout="absolute">
<mx:Button label="fun1" click="fun1()"/>
<mx:Script>
<![CDATA[
private var gb:int = 1;
private function fun1():void{
trace(this);//输出:AddPerson2 问题3:为什么不是global或者AddPerson?
fun5(function():void{//问题2:此匿名函数中的this 指向的是global 为什么不是fun1或其他?
trace(this);//输出:[object global]
trace(gb);//输出:1
})();
var obj:Object = obj.fun3();
obj.fun4();
fun5_2({fun:function():void{
trace(this);//输出:[object Object]
trace(gb);//输出:1
}}).fun();
}
private var obj:Object = {
fun3:function():Object{
trace(this);//输出:[object Object] -
trace(gb);//报错:在 Object 上找不到属性 view:AddPerson::gb,且没有默认值。
return {
fun4:function():void{
trace(this);//输出:[object Object] -
trace(gb);//报错:
}
}
}
}
private function fun5(fun6:Function):Function{
fun6();
return function():void{//问题1:此匿名函数中的this 指向的是global 为什么不是fun5
trace(this);//输出:[object global]
trace(gb);//输出:1
}
}
private function fun5_2(param:Object):Object{
param.fun();
return {
fun : function():void{
trace(this);//输出:[object Object]
trace(gb);//输出:1
}
}
}
]]>
</mx:Script>
</mx:TitleWindow>flex学习之路--问题手册:as 关于this和变量的范围【未解决,求解决】
原文地址:http://blog.csdn.net/u013934914/article/details/44856763