生成描述 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 | 属性的访问权限。可能的值包括 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 对象,包含有关作为参数传入的对象的详细信息。它提供有关对象的以下信息:
- 对象的类
- 类的属性
- 从类到其基类的继承树
- 类实现的接口
- 类的已声明实例属性
- 类的已声明静态属性
- 类的实例方法
- 类的静态方法
- (对于类的每个方法)名称、参数的数量、返回类型和参数类型
注意:
describeType()
只显示公共属性和方法,而不会显示私有、在包内部或在自定义命名空间中的属性和方法。