Actionscript 3 如何在Actionscript3中找到变量/名称的类型?

Actionscript 3 如何在Actionscript3中找到变量/名称的类型?,actionscript-3,types,Actionscript 3,Types,呃,就是这样 如果内存没问题,一个方法flash.utils.describeType将为您提供一个包含对象/类型的所有反射类型信息的xml文档 实际上:该函数称为typeof()。 您可以将任何ActionScript值传递到此函数,以获取包含其完全限定类名的字符串。运算符是最新的解决方案: var mySprite:Sprite = new Sprite(); trace(mySprite is Sprite); // true 请参见如果您只需要最基本的类型描述,则

呃,就是这样

如果内存没问题,一个方法flash.utils.describeType将为您提供一个包含对象/类型的所有反射类型信息的xml文档


实际上:

该函数称为typeof()。


您可以将任何ActionScript值传递到此函数,以获取包含其完全限定类名的字符串。

运算符是最新的解决方案:

var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite);           // true

请参见

如果您只需要最基本的类型描述,则可以使用
typeof
运算符,如下所示:

var foo:String = "test";
trace( typeof foo );
// string
虽然这很方便,但也有一个缺点。因此,它总是给出变量的基类型,例如:

var foo:Array = ["A","B","C","D"];
trace( typeof foo );
//object

var bar:int = 5;
trace( typeof bar );
//number

var hummer:Car = new Car();
trace( typeof hummer );
//Vehicle
这两者在技术上都是正确的,但可能不是你想要的

如果您想要更具体的类型(即
Array
String
等),则需要使用
flash.utils
包中稍微复杂的
getQualifiedClassName()
函数:

import flash.utils.getQualifiedClassName;

var foo:Array = ["A","B","C","D"];
trace( getQualifiedClassName( foo ) );
//Array

var bar:int = 5;
trace( getQualifiedClassName( bar ) );
//int

var hummer:Car = new Car();
trace( getQualifiedClassName( hummer ) );
//Car


将返回除5种预定义类型外的所有类型的“object”。但这并不能回答问题,问题是“给定一个变量,我如何找到它的类型”,而不是“给定一个变量,我如何判断它是否是给定类型”。如果用户知道可能的var类型,或者想知道var是否是一种特定的类型,那么这个解决方案就会起作用。其他一些答案提到了不推荐使用的函数(例如typeof)。哇,这实际上是关于类型的信息太多了。我希望它也包括房产的实际价值。哦,不管怎样,很高兴知道。
import flash.utils.getQualifiedClassName;

var foo:Array = ["A","B","C","D"];
trace( getQualifiedClassName( foo ) );
//Array

var bar:int = 5;
trace( getQualifiedClassName( bar ) );
//int

var hummer:Car = new Car();
trace( getQualifiedClassName( hummer ) );
//Car