var arr:Cls = new Cls();
arr["property1"] = "property111"; arr.property2 = "property2222"; var xml:XML = describeType(arr);
for (var m in arr) { trace (m); }
trace (xml);
describeType () 函数 public function describeType(value:*):XML 语言版本 : ActionScript 3.0 Player 版本 : Flash Player 9 生成描述 ActionScript 对象(命名为方法的参数)的 XML 对象。 此方法实现 ActionScript 语言的反射编程概念。 如果 value 参数是类型的实例,则返回的 XML 对象包括该类型的所有实例属性,但不包括任何静态属性。 可以在解析 XML 对象时检查此条件,方法是检查 <type> 标签的 isStatic 属性的值,该值在 value 参数是类型的实例时为 false。 若要获取某个类型的静态属性,请为 value 参数传递该类型本身。 返回的 XML 对象不仅仅包括类型的静态属性,而且还包括它的所有实例属性。 实例属性嵌套在名为 <factory> 的标签内,从而与静态属性区分开来。 在这种情况下,<type> 标签的 isStatic 属性为 true。 注意:如果只需要遍历某个对象的继承层次结构,而不需要 describeType() 提供的其它信息,请改用 getQualifiedClassName() 和 getQualifiedSuperclassName() 函数。 下表描述了 describeType() 所生成的 XML 对象的一些标记和属性: 标签 属性 Description <type> XML 对象的根标签。 name ActionScript 对象的数据类型的名称。 base ActionScript 对象的定义类的直接超类。 如果 ActionScript 对象是类对象,则值为 Class。 isDynamic 如果 ActionScript 对象的定义类是动态的,则为 true;否则为 false。 如果 ActionScript 对象是类对象,则值为 true,因为 Class 类是动态的。 isFinal 如果 ActionScript 对象的定义类是最终类,则为 true;否则为 false。 isStatic 如果 ActionScript 对象是类对象或构造函数,则为 true;否则为 false。 此属性之所以名为 isStatic,原因是:如果此属性为 true,则未嵌套在 factory 标记内的任何标签都是静态的。 <extendsClass> ActionScript 对象的定义类的每个超类都有一个单独的 extendsClass 标签。 type ActionScript 对象的定义类扩展的超类的名称。 <implementsInterface> ActionScript 对象的定义类或其任何超类实现的每个接口都有一个单独的 implementsInterface 标签。 type ActionScript 对象的定义类实现的接口的名称。 <accessor> 存取器是 getter 和 setter 函数定义的一个属性。 name 存取器的名称。 access 属性的访问权限。 可能的值包括 readonly、writeonly 和 readwrite。 type 属性的数据类型。 declaredBy 包含关联的 getter 或 setter 函数的类。 <constant> 常量是用 const 语句定义的一个属性。 name 常量的名称。 type 常量的数据类型。 <method> 方法是作为类定义的一部分声明的函数。 name 方法的名称。 declaredBy 包含方法定义的类。 returnType 方法的返回值的数据类型。 <parameter> 方法定义的每个参数都有一个单独的 parameter 标签。 此标签始终嵌套在 <method> 标签内。 index 一个数字,对应于参数在方法的参数列表中出现的顺序。 第一个参数的值为 1。 type 参数的数据类型。 optional 如果参数是可选参数,则为 true;否则为 false。 <variable> 变量是用 var 语句定义的一个属性。 name 变量的名称。 type 变量的数据类型。 <factory> 如果 ActionScript 对象是类对象或构造函数,则所有实例属性和方法均嵌套在此标签内。 如果 <type> 标签的 isStatic 属性为 true,则未嵌套在 <factory> 标签内的所有属性和方法都是静态的。 只有在 ActionScript 对象是类对象或构造函数时,此标签才会出现。 参数 value:* — 需要类型说明的对象。 可以将任何 ActionScript 值传递给此方法,包括所有可用的 ActionScript 类型、对象实例、原始类型(如 uint)和类对象。 返回 XML — 一个 XML 对象,包含有关作为参数传入的对象的详细信息。 它提供有关对象的以下信息: 对象的类 类的属性 从类到其基类的继承树 类实现的接口 类的已声明实例属性 类的已声明静态属性 类的实例方法 类的静态方法 (对于类的每个方法)名称、参数的数量、返回类型和参数类型 注意: describeType() 只显示公共属性和方法,而不会显示私有、在包内部或在自定义命名空间中的属性和方法。
actionscript遍历类的所有属性,布布扣,bubuko.com
原文:http://www.cnblogs.com/ference/p/3620232.html