actionscript遍历类的所有属性

 

1、

ObjectUtil.getClassInfo(obj).properties as Array


2、

              var o:Object=new Object();
                        o.name='mm';
                        o.type='size';
                        o.size='32D';
                        for (var i:String in o)
                        {
                                trace(i);
                                trace(o[i]);
                        }

 

3、

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() 只显示公共属性和方法,而不会显示私有、在包内部或在自定义命名空间中的属性和方法。 

 

posted @ 2014-03-24 10:03  ference  阅读(718)  评论(0)    收藏  举报