zoukankan      html  css  js  c++  java
  • 集合(ArrayCollection)的复制

    利用Flex SDK自带的mx.utils.ObjectUtil类的copy方法就可以复制集合,

    但复制后的集合无法识别里面数据的数据类型,这里需要利用 flash.net.registerClassAlias方法

    对集合里德数据类型进行注册。具体方法如下:

    /**
    * 复制对象,对象属性中可以是对象,对象中的对象如果未初始化则无法注册类型。 
    * @param objToCopy 要复制的对象
    * @param registerAlias 是注册数据类型
    * @return 转换后的对象
    * 
    * objToCopy[arr[i]]所指向的对象没有初始化时,objToCopy[arr[i]] is Object返回是false,否则返回true
    */
    public static function copyOverObject(objToCopy:Object, registerAlias:Boolean = false):Object
    {
    	if (registerAlias)
    	{
    		var className:String;
    		var arr:Array = ObjectUtil.getClassInfo(objToCopy).properties;
    
    		for(var i:int = 0;i<arr.length;i++)
    		{
    			if( objToCopy[arr[i]] is String||
    				objToCopy[arr[i]] is int||
    				objToCopy[arr[i]] is uint||
    				objToCopy[arr[i]] is Number||
    				objToCopy[arr[i]] is Boolean)
    			continue;
    			try
    			{
    				className = ObjectUtil.getClassInfo(objToCopy[arr[i]]).name;
    				registerClassAlias(className,getDefinitionByName(className) as Class)
    			}
    			catch(e:Error)
    			{
    				//objToCopy[arr[i]]==null;
    				//trace("属性:"+arr[i]+" 值为null,无法注册类型!");
    
    			}
    		}
    		className = getQualifiedClassName(objToCopy);
    		registerClassAlias(className,getDefinitionByName(className) as Class);
    	}
    	return ObjectUtil.copy(objToCopy);
    }
    

    说明:

       这个方法能复制的对象的属性可以是一个复杂的对象类型,如:

         o = {};

         o.p={"a":"b","c":"d"};//可以复制对象o

      但此对象属性的属性不能再是复杂的对象类型,将无法复制,如:

         o = {};

         t = {{"x":1},"y":2};

         o.p=t;//无法复制对象o

    想要复制后面一种情况可以换一种思路去解决,后面再贴了!有了上面的方法,要复制集合就很简单了。

      1。将集合的source属性(一个数组)取出,遍历复制数组中的每个元素,并生成一个新的数组。

      2。定义个新的集合,将上面的新数组赋值给新集合的source属性。

  • 相关阅读:
    spring cloud的消费服务ribbon(踩着坑往前爬)
    spring cloud注册服务与发现(踩着坑往前爬)
    springboot配置多数据源
    ssh免密登入
    mybatais面试题(复习篇)
    ssh全注解整合
    Vue项目中使用axios配置请求拦截
    Vue后台的路由和权限校验
    CSS3新增属性(4)
    CSS3新增属性(3)
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1731443.html
Copyright © 2011-2022 走看看