加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FLEX的Object类

发布时间:2020-12-15 04:13:24 所属栏目:百科 来源:网络整理
导读:?? Object?数据类型是由?Object?类定义的。Object?类用作?ActionScript?中的所有类定义的基类。ActionScript 3.0?中的?Object数据类型与早期版本中的?Object?数据类型存在以下三方面的区别:第一,Object?数据类型不再是指定给没有类型注释的变量的默认数据

??Object?数据类型是由?Object?类定义的。Object?类用作?ActionScript?中的所有类定义的基类。ActionScript 3.0?中的?Object数据类型与早期版本中的?Object?数据类型存在以下三方面的区别:第一,Object?数据类型不再是指定给没有类型注释的变量的默认数据类型。第二,Object?数据类型不再包括?undefined?这一值,该值以前是?Object?实例的默认值。第三,在ActionScript 3.0?中,Object?类实例的默认值是?null

初始化

var data:Object =
? ? ? ? ? ? {
? ? ? ? ? ? ? ? tool: action,
? ? ? ? ? ? ? ? status: status,
? ? ? ? ? ? ? ? symbol: symbol
? ? ? ? ? ? };

???????在flex实践当中,object类型是一个使用率很高的类型,因此需要熟练使用,尤其要注意下述3点:

1)????object属性使用(读取、添加、删除、遍历)

???????object类型通过“.”或者”[]”动态添加属性,通过delete操作删除已有的属性,那么as中object为何可以如此操作?原理如何?个人认为,熟悉java的不妨把object当做map来看好了(key-value的键值对,事实上blazeds进行flex和java通信的时候,flex的object就是序列化成java的map类型)。当然object可以动态增删属性一定要与actionscript的动态类关联起来。

???????假设现有一个object,var person:Object;

???????person.name = “emma”;????????//添加了name属性,person[“name”] = “emma”,效果一致;

???????delete person.name;?????????????????????//删除name属性

???????var name:String = person.name;????//读取name属性

???????/*遍历person所有属性*/

????????for(var prop in person){

??????????????person[prop]

???????}

?

2)????object复制、克隆

???????经常会遇见复制一个object出来用作其它处理,这时就需要掌握object的复制和克隆了,其原理很简单,把原object序列化成流,然后将流反序列化成新对象即可。在actionscript3中已有objectutil工具类封装了object的复制和克隆功能,大家只要如下调用即可。

???????ObjectUtil.clone(value);????????//clone object

????ObjectUtil.copy(value);?????//copy object

?

3)判断两个Object相等可以用

ObjectUtil.compare的方法

4)????uid

??????????经常会碰到比较2个对象是否一致,当然可以通过遍历每一个属性值是否相等来实现,这样的效率很差,而且代码工作量比较大。因此,建议给object加个uid,通过uid是否相等来比较是否同一个object。事实上flex中的很多组件设计就有此思想,如常用的datagrid控件,当其设置了dataprovider之后,dataprovider中的每一个对象会被自动添加mx_internal_uid属性,该属性的值就是uid值。

?????????var uid:String =?UIDUtil.createUID();?????//获取uid值。

如何动态获取object的属性和值

var?ct:CustomObject=newCustomObject();?
?xml:XML??describeType(ct);
for?each(?accessor?in?xml..accessor){
??
?name:String?accessor.@name;
??
?type:String?accessor.@type;
??trace(ct[name]);
}

Flex获取Object的属性Key(关键字)

//本例 obj[key]=xxx。? 通过xxx获取key。

var myObject:Object = {PlayerName:"LaoCao",age:27,city:"Liaoning"};
for (var name in myObject) {
if (typeof (myObject[name]) == "string")

//当Object带Key关键字 的 属性值为“String” 的 ,本例有【LaoCao和Liaoning】

{
???????? trace("I have a string property named "+name);
}
}
/*** ? 控制台 输出
I have a string property named PlayerName
I have a string property named city
?
?***/

?

for (var name in myObject) {
if (typeof (myObject[name]) == "string")

//当Object带Key关键字 的 属性值为“int” 的 ,本例有【age】

{
???????? trace("I have a int property named "+name);
}
}

/*** ? 控制台 输出
I have a int property named age?
?***/

遍历Json Flex

程序得到的对象如下:
{"名称":"学生","成绩":"100","科目":"计算机","老师":"老师","编号":"450421010003","排名":"1","性别":"男"}
且该对象是动态获取到的,并不知道各个key-value及具体有多少个key-value,想绘制成表格,格式如下:

名称:学生
成绩:100
科目:计算机
老师:老师
编号:450421010003
排名:1
性别:男


?

for(var prop:String in object) { trace(prop+"="+object[prop]) }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读