Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3355038
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: 系统运维

2011-05-13 09:37:10

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

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

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

参考文献
1.actionscript3高阶之Object类型说明. http://blog.csdn.net/chuangxin/archive/2010/05/03/5553340.aspx
阅读(9521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~