在ActionScript3中动态类的使用确实能起到很大的帮助作用,比如Object作为数据传递值使用,当然我们也可以在新建一个as类时定义为Dynamic,便于在运行时动态添加属性和方法,具体动态类型的使用这里只粘贴几个简单应用,可以参看Object的使用方式。
package vo
{
public dynamic class DynamicUserVo
{
public function DynamicUserVo()
{
}
}
}
应用:
var dynamicVO:DynamicUserVo = new DynamicUserVo();
dynamicVO.userName = "test";
dynamicVO.password = "12345";
重点说明for...in和for each ...in的区别,这两种for循环都可以遍历动态类的属性以及容器类数据结构,但是for...in遍历输出的是属性的名称或者数组的下标,而for each ...in则遍历返回的是具体的值。
1.以动态类为例
var dynamicVO:DynamicUserVo = new DynamicUserVo();
dynamicVO.userName = "test";
dynamicVO.password = "12345";
for(var value:String in dynamicVO)
{
//这里的value得到的是属性的名称,而具体要取到值则需要根据名称获取。
trace("--> " + value + ":" + dynamicVO[value]);
}
for each(var value2:String in dynamicVO)
{
//这里的value2则是具体的值
trace("--> value2:" + value2);
}
2.以Array为例:
var list:ArrayCollection = new ArrayCollection(["test", "12345"]);
for(var value:String in list)
{
trace("--> value :"+ list[value]);
}
for each(var value2:String in list)
{
trace("--> value2:" + value2);
}
需要注意的就是遍历对象如果是密封类的实例,则您无法循环获得该对象的属性,即使是动态类,也无法访问动态类实例的固有属性。