as3 describeType

生成描述 ActionScript 对象(命名为方法的参数)的 XML 对象。此方法实现 ActionScript 语言的反射编程概念。

如果 value 参数是类型的实例,则返回的 XML 对象包括该类型的所有实例属性,但不包括任何静态属性。可以在解析 XML 对象时检查此条件,方法是检查 <type> 标签的 isStatic 属性的值,该值在 value 参数是类型的实例时为 false

要获取某个类型的静态属性,请为 value 参数传递该类型本身。返回的 XML 对象不仅仅包括类型的静态属性,而且还包括它的所有实例属性。实例属性嵌套在名为 <factory> 的标签内,从而与静态属性区分开来。在这种情况下,<type> 标签的 isStatic 属性为 true

注意:如果只需要遍历某个对象的继承层次结构,而不需要 describeType() 提供的其他信息,请改用 getQualifiedClassName()getQualifiedSuperclassName() 函数。

下表描述了由 describeType() 生成的 XML 对象的某些标签和属性(返回的所有类和接口名称均采用完全限定的格式):

标签 属性 说明
<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 属性的访问权限。可能的值包括 readonlywriteonlyreadwrite
  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 对象,包含有关作为参数传入的对象的详细信息。它提供有关对象的以下信息:
  • 对象的类
  • 类的属性
  • 从类到其基类的继承树
  • 类实现的接口
  • 类的已声明实例属性
  • 类的已声明静态属性
  • 类的实例方法
  • 类的静态方法
  • (对于类的每个方法)名称、参数的数量、返回类型和参数类型

注意: describeType() 只显示公共属性和方法,而不会显示私有、在包内部或在自定义命名空间中的属性和方法。

原文地址:https://www.cnblogs.com/naiking/p/2609641.html