Actionscript 3 as3-从空变量中找出变量类型

Actionscript 3 as3-从空变量中找出变量类型,actionscript-3,class,dynamic,Actionscript 3,Class,Dynamic,当变量未实例化时,是否可以确定变量类型 我正在努力实现的示例: var foo:ExampleOne; var bar:ExampleTwo; var arr:Array = [foo, bar]; for each(var myVar:Object in arr) { myClass = new getDefinitionByName( getQualifiedClassName( myVar ) ) // doesn't work } 不,因为变量是对vm中未创建的对象的引用,

当变量未实例化时,是否可以确定变量类型

我正在努力实现的示例:

var foo:ExampleOne;
var bar:ExampleTwo;

var arr:Array = [foo, bar];

for each(var myVar:Object in arr)
{
    myClass = new getDefinitionByName( getQualifiedClassName( myVar ) ) // doesn't work
}

不,因为变量是对vm中未创建的对象的引用,除非您使用“new”关键字创建它们。因此,在执行此操作之前,无论您在引用(foo/bar等)上运行什么操作,它们都将始终为空。

我不知道您想做什么,但您可以使用
描述类型

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.ByteArray;
    import flash.utils.describeType;
    import flash.utils.getDefinitionByName;


    public class TestTextfield extends Sprite
    {
        public var foo:TextField;
        public var bar:ByteArray;

        public function TestTextfield()
        {
            var arr:Array = ["foo", "bar"];

            for each(var myVar:String in arr)
            {
                var varClass : String = describeType(this)..variable.(@name == myVar).@type.toString();
                var myClass : * = new (getDefinitionByName(varClass) as Class)
            }
        }

    }
}
尝试使用“className”属性

它应该返回“文本输入”、“按钮”等。。。视情况而定

for each (var item:* in myArray)
{
    if(item.hasProperty('className'))
    {
        trace("item ["+i+"] is :" + item['className']);
    }
}

也许你想做这样的事

var a:Class = MyClassA; //put a reference to a Class object into 'a' variable
var b:Class = MyClassB;

var classes:Array = [a,b];

for each(var classObj:Class in classes){
  var objInstance : * = new classObj()
}

试过了,没用。我投了否决票,因为我没有测试就发布了一个答案。它有效^^',这就是为什么我把所有的文件结构都放在flash Builder上,我刚刚测试过。我很高兴向上投票以取消否决票,尽管我注意到你在引号中加了“foo”和“bar”,这是作弊!;)好吧,这不可能是最初要求的方式。没错,我作弊,但我认为这是最接近的方式。该项为null,因此您无法访问变量内的任何内容。好的。。那么问题是:这是什么类型的?有一个解决方案。。。没有类型。我知道,但变量是声明的,所以我想我可以检索此信息。