(AS3)关于arguments
一、官方说明

二、使用心得
arguments包含了当前执行方法的参数,注意,不包含默认参数!
arguments可以全局访问,可以在任何方法里访问,除此之外,在定义变量的时候或者初始化的时候是不能访问的。
arguments本质上是一个Array的实例,可以使用任何Array的方法,不过又比Array多了一个属性:callee,这个属性表示当前正在执行的方法的引用,比如你在某个方法test下断点,当断点到此处的时候,callee===test。
arguments的每个实例都是不同的,也就是说,执行到不同的方法,存在不同的arguments实例,不过你可以将它们的实例保存下来,这些实例之间并不会产生冲突。
三、注意事项
特别要说明的是,关于arguments.length,先看代码:
function test1(p1:int, p2:int)
{
trace(arguments.length)
trace(arguments)
} function test2(p1:int, p2:int = 400)
{
trace(arguments.length)
trace(arguments)
} test1(100,200)
test2(300) //output:
2
100 200
1
300
test2有一个默认参数,但在执行时,arguments并同有把这个默认参数算在里面。
四、实际应用
- 保存方法的详细信息
 最近我在实现一个这样的功能,某个类的方法要按队伍的方式逐个调用,因为每个方法调用的时间不确定,但调用完成后会有回调,所以我的问题就转换为把函数信息和参数保存下来。
 当然,可以用最简单的方法把每个方法的引用和参数逐个用代码写下来,然后保存到一个队列里,不过我想找到一个更简单的方法。
 arguments就可以解决我的问题,arguments.callee就是函数的引用,而它本身又包含了方法的参数信息,这样的话,我只需要保存在Object就可以。
 像这样:var funcObj = {func:arguments.callee, args:arguments}; queue.enqueue(funcObj);
- 移除匿名方法监听
 有时可能为了方便,而且是一次性的事件监听,其实就没必要再写成一个成员方法,比如以下:
 addEventListener(Event.ADDED_TO_STAGE, function(e:Event)
 {
 removeEventListener(Event.ADDED_TO_STAGE, arguments.callee)
 })
五、杂项
这里还用到了Function这个对象的apply方法,关于这个方法,可以看一上官方的文档,点击查看。
获取当前正在执行的方法名,网友的方法,点击查看。
(new Error()).getStackTrace().split("/")[1].split("(")[0]
(AS3)关于arguments的更多相关文章
- as3 arguments.callee与... (rest)
		import flash.display.Sprite; var count:int = 1; ArgumentsExample() function ArgumentsExample() { fir ... 
- AS3在函数内部移除监听(arguments.callee)
		scene.addEventListener(Event.ADDED_TO_STAGE, function():void { scene.removeEventListener(Event.ADDED ... 
- 【AS3】Flash与后台数据交换四种方法整理
		随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法.1.URLLoader(URLStream)2.FlashRemoting3.XMLSo ... 
- (转)as3效率优化
		1.改进算法无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了 ... 
- [AS3]as3与JS的交互(AS3调用JS)实例说明
		一,AS3 vs JavaScript (1)AS3调用JS 函数: ExternalInterface.(functionName:, arguments): //AS3 Code 属性: 同上,通 ... 
- AS3事件机制概述
		事件机制是AS3的核心功能之一,没有充分掌握事件机制的方方面面,就不能算是精通AS3语言. 1. AS3事件机制的主要成员 IEventDispatcher:事件派发对象接口,定义了添加.派发.移除. ... 
- c# winform as3相互调用
		C#主要代码: 首先要添加COM组件-Shockwave Flash Object //接收flash发送过来的信息 private void axShockwaveFlash1_Fla ... 
- OC与AS3的观察者模式比较以及外部回调
		一.要点 1.AS3的观察者模式,主要是体现在在哪个组件上监听,那么就在这个组件上分发事件,并且可以直接传递Function. 2.OC的观察者模式,主要是需要你指定观察的对象,和观察的对象方法sel ... 
- javascript与as3交互
		文章都是发布在github再转到这边的,这边格式可能会乱掉.博客地址:benqy.com 写在前面的废话 公司首页的flash广告,都是由第三方制作的,脚本和flash文件都是由各个广告公司独立制作, ... 
随机推荐
- iOS开发网络篇—简单介绍ASI框架的使用
			iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ... 
- Windows Server 2008 R2 DNS服务器迁移
			一.实验模拟环境: Zhuyu公司有一个DNS服务器,因DNS服务器比较老旧,准备迁移至新的DNS服务器上(DNS备份也可以这么操作). 旧DNS服务器: 主机名: test-zhuAD ... 
- 集合Hashtable Dictionary   Hashset
			#region Dictionary<K,V> Dictionary<string, Person> dict = new Dictionary<string, Pers ... 
- MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
			从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值. 说明: ... 
- 权限获取异常(不能用ModuleId,得换个名字)目前还没搞清楚为啥
			CenterController: /// <summary> /// 访问模块,写入系统菜单Id /// </summary> /// <param name=&quo ... 
- 构建高性能的ASP.NET应用程序
			看见大标题的时候,也许各位看官会自然而然的联想到如何在设计阶段考虑系统性能问题,如何编写高性能的程序代码.关于这一点,大家可以在MSDN和相关网站上找到非常多的介绍,不过大多是防患于未难,提供的是在设 ... 
- Json.net对于导航属性的处理(解决对象循环引用)
			对于两张表A.B多对多的关系中,A的导航属性中有B,B的导航属性中有A,这样Json.net对A或者B对象序列化时会形成死循环 所以对于导航属性要加标签 首先在A.B实体类工程(Model)中引用Js ... 
- OBD K线抓包 III
			14230 HL激活, 5BPS又称 00 //电平激活 C1 33 F1 81 66 //14230的Enter命令 83 F1 11 C1 EF 8F C4 //回应了,一个命令就回应了... ... 
- SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)
			转自:http://www.cnblogs.com/zerocc/p/3425431.html 昨天在测试一些权限今天早上来就发现SQL SERVER 登陆不上去,报错为: 用户登陆失败:消息 184 ... 
- bat命令
			将DIR设置为当前文件所在的绝对路径 @echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前盘符和路径的短文件名格式:%~sdp0 echo 当前批处理 ... 
