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

源代码

<?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为什么不能被访问到?

求大神解答:

时间: 2024-08-29 16:45:31

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

flex学习之路--问题手册:java序列化问题

环境描述:Spring + flex + mysql 说明:这里只是关于Spring的,与flex和mysql无关 问题说明: 原因: web容器没有正确加载类 解决方法: clean项目. 我去,当时听到这个解决方法,就囧囧囧了

flex学习之路--问题手册:as中术语尚未定义,并且无任何属性

问题描述: 原因: tools对象中的clearTextArea属性保存了匿名函数的地址,匿名函数的this关键字存储的值为tools对象.而全局的函数clearTextArea_clickHandler的this关键字存储的是整个window. 解决方法: 将window对象传递给匿名函数 如图所示: 如有错误,请大神指明.

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

源代码 <?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="f

Spark学习之路 (四)Spark的广播变量和累加器

一.概述 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本.这些变量会被复制到每台机器上,并且这些变量在远程机器上的所有更新都不会传递回驱动程序.通常跨任务的读写变量是低效的,但是,Spark还是为两种常见的使用模式提供了两种有限的共享变量:广播变(broadcast variable)和累加器(accumulator) 二.广播变量broadcast variable 2.1 为什么

Spark学习之路 (四)Spark的广播变量和累加器[转]

概述 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本.这些变量会被复制到每台机器上,并且这些变量在远程机器上的所有更新都不会传递回驱动程序.通常跨任务的读写变量是低效的,但是,Spark还是为两种常见的使用模式提供了两种有限的共享变量:广播变量(broadcast variable)和累加器(accumulator) 广播变量broadcast variable 为什么要将变量定义成

linux学习之路及文本查看和文本处理命令

这一篇主要介绍几个常用的文本查看命令和文本处理命令. 首先介绍文本查看命令 cat:用于连接文件并显示 说明:当只有一个文件时,则用于查看文件内容:当有多个文件时,cat命令会将这些文件连接起来,在一起显示出来 语法格式:cat [option] FILE... -n:显示内容的时候把行号显示出来 -E:显示每一行的结束符$符(默认不显示) tac:也是用于显示文件内容,只不过他是将文件的内容倒过来显示,与cat相反 -n:显示行号 -E:显示每一行结尾的结束符$ 分屏操作命令 more与les

STM32学习之路-不得不说的SysTick时钟

SysTick时钟,俗称"嘀嗒定时器",这家伙能按固定的时间产生一次中断,通常是多长时间产生一次中断呢?官方给出的一个时间是1ms 那么,它是怎么准确的产生1ms的呢.. 先来看看这家伙在时钟树的哪里吧 是它,是它,就是它,红色框里的东东,可以看到,它是由HCLK/8得到的,也就是:72MHz/8=9MHz 我们还能在STM32手册上找到这么一句话:系统嘀嗒校准值固定位9000,当系统嘀嗒时钟设为9MHz,产生1ms时间基准. 让我们来看看9000是怎么来的,这里要看下SysTick寄

Python学习之路——强力推荐的Python学习资料

资料一:程序媛想事儿(Alexia)总结 Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Pyth

前端:HTML5学习之路(一)

第1章 HTML5基础 关于HTML5基础这一部分的内容没有明显边界.各种HTML5教材关于HTML5基础知识的介绍大同小异,这里不做过多赘述. 1. 我们要把HTML5简单用起来,首先要学会新建HTML5文档.每个网页都包含doctype.html.head和body元素,以下是一个简单的HTML5文档示例(用到了a.article.em.h1.img和p这6种常见的元素): 1 <!doctype html> 2 <html> 3 <head> 4 <meta