码迷,mamicode.com
首页 > 其他好文 > 详细

flex学习之路--问题手册:as 关于this和变量的范围【未解决,求解决】

时间:2015-04-03 17:26:00      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:as   function   源代码   全局变量   作用范围   

源代码

<?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>

图片说明

技术分享

问题:

1.第9行,输出为什么不是global或者AddPerson?为什么是AddPerson2?

2.第11行,输出为什么是global?

3.怎么判断this关键字是global还是其他?

4.第23行,this作用域链中,[0] 为什么是匿名的?而别的却是指向方法的。

5.第24行,全局变量gb为什么不能被访问到?




求大神解答:













flex学习之路--问题手册:as 关于this和变量的范围【未解决,求解决】

标签:as   function   源代码   全局变量   作用范围   

原文地址:http://blog.csdn.net/u013934914/article/details/44856763

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!