Flex类似于Java的反射
熟悉Java的朋友都知道反射(reflect),只要拿到对象的Class信息就可以获得它的constructor、fields、methods等信息。但Flex中没有类似的机制。但我们可以将一个对象描述为XML,再通过解析XML信息来间接地获取对象的蛛丝马迹。
主要方法是describeType(object):XML。下面是项目中的一个例子,用来判断:
/** * @author liujian * 一个对象是否包含某个属性 * */ public static function isHaveAttribute(object:*, attributeName:String):Boolean{ var flag:Boolean = false; var objXML:XML = describeType(object); var xmlList:XMLList = (objXML.variable.length()==0)?objXML.accessor:objXML.variable; for each(var eachXML:XML in xmlList){ if(eachXML.@name == attributeName){ flag = true; break; } } return flag; }