`
luhantu
  • 浏览: 205057 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex 深复制 浅复制

    博客分类:
  • Flex
阅读更多

对于基本类型,无所谓深浅复制。

深浅复制只要是对于引用类型来说的。一句话概括来说就是:引用类型是否指向了新的内存地址。

例如对于数组来说,因为数组不是类型化数组,所以你可以往数组里面放置基本类型数据和引用类型数据,对于包含引用类型的数据的数组,讨论才有意义。

 

var array:Array = [1,2,3,{name:"kenny"}];
var shallowCopyArray:Array = array.concat();
var cloneArray:Array = ObjectUtil.clone(array) as Array;

 对于浅复制,shallowCopyArray最后一个元素和原始数组最后一个元素的引用地址是一样;

 

 对于深复制,cloneArray的最后一个元素和原始数组最后一个元素的引用地址是不一样;

内容地址的不一样,导致你操作的是否是同一个对象。

 

对于自定义对象的复制,譬如说自己提供一个clone()方法提供自身的复制对象。一般来说涉及到原型模式。

如果自定义对象中包含了另一个对象(自定义的),在你复制自身之前,需要做一些事情,不然它复制出来的对象就是一个Object啦,而非你自定义的对象。

App:

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   minWidth="955" minHeight="600"">
	<fx:Script>
		<![CDATA[
			import com.mode.clone.Company;
			import com.mode.clone.Person;
			protected function button1_clickHandler(event:MouseEvent):void
			{
			 	var person:Person = new Person();
				person.name = "kenny";
				var company:Company = new Company();
				company.name = "lomboard";
				person.company = company;
				var clonePerson:Person = person.clone();
				// 去查看下clonePerson中的company是否是一个Company对象还是一个Object
			}
		]]>
	</fx:Script>
	<s:Button click="button1_clickHandler(event)"/>
</s:Application>

 Person:

 

package com.mode.clone
{
	import flash.net.registerClassAlias;
	import mx.collections.ArrayCollection;
	import mx.utils.ObjectUtil;
	public class Person
	{
		public var name:String;
		public var company:Company;//另一个自定义对象
		public function clone():Person
		{
			registerClassAlias("com.mode.clone.Company",Company);//对一个对象进行编码时,保留该对象的类(类型)。
			registerClassAlias("com.mode.clone.Person",Person);
			//如果没有上面的编码,你就不能强制转换为person
			return ObjectUtil.copy(this) as Person;
		}
	}
}

 Company:

package com.mode.clone
{
	public class Company
	{
		public var name:String;
	}
}

 

 

0
0
分享到:
评论

相关推荐

    flex4.5从浅入深第一、二章清晰版

    本书《flex4.5从浅入深》旨在帮助开发者深入理解Flex 4.5的各个方面,从基础知识到高级特性,逐步提升开发技能。标题表明本书分为两大部分,第一章节包含16节内容,第二章节则有5节,都提供了清晰易读的版本。 在...

    Flex4.5从浅入深

    ### Flex4.5从浅入深:第一章可视化组件运用与第一节button详解 #### 一、Flex简介及文档结构概述 Flex是一种开源框架,用于构建跨平台的桌面和移动设备应用程序。它结合了强大的编程语言ActionScript 3以及一组...

    flex4.5从浅入深第一章

    ### Flex4.5从浅入深第一章:可视化组件运用 #### 一、Flex与组件的基础概念 《Flex4.5从浅入深》这一章节主要介绍了Adobe Flex框架的基础知识,尤其是针对初学者如何快速掌握Flex的基本组件使用方法。Flex是一种...

    flex4.5从浅入深第二章

    在“Flex 4.5从浅入深第二章”中,我们将深入探讨Flex 4.5的诸多核心概念和技术,帮助开发者更有效地利用这一平台创建动态且交互性强的Web应用。 本章节主要涵盖以下几个知识点: 1. **Spark组件模型**:与Flex 3...

    flex4.5 从浅入深 第一章 可视化组件.pdf 第二章 布局组件.pdf

    flex4.5 从浅入深 第一章 可视化组件.pdf 第二章 布局组件.pdf,初学者的福音。

    flex表格复制

    这个主题“flex表格复制”涉及到的是如何在Flex中实现表格数据的复制功能,这在许多业务应用中是非常常见的需求。Flex中的表格通常由mx:DataGrid组件表示,它允许用户展示和操作数据集。 在博文《flex表格复制》中...

    01 FLEX从浅入深简单教程.docx

    ### FLEX从浅入深简单教程 #### 一、Flex基本概述 Flex是Adobe公司推出的一种强大工具和技术集合,主要用于开发和部署可升级的富互联网应用程序(Rich Internet Applications, RIA)。通过Flex,开发人员可以利用...

    Flex 颜色处理 深浅变化

    一个colorUtil类,用于颜色变化取值,一个小算法,输入深色、浅色、step后,会自动按照step求出一组颜色,深浅变化。

    Flex Flex Flex Flex

    Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...

    Flex A10如何复制粘贴文件.docx

    Flex A10是一款平板电脑设备,用户在使用过程中可能需要进行文件的复制和粘贴操作。这个过程在不同设备上可能会有所不同,但对于Flex A10,我们可以按照以下步骤来进行: 1. **启动Home键**:首先,当你需要进行...

    Flex相册 Flex图片

    Flex相册 Flex图片

    Flex万年历记事本_flex源码

    Flex是Adobe公司推出的一种基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。这种技术允许开发者创建具有高度交互性和动态视觉效果的Web应用,提供比传统...

    flex学习笔记 flex学习总结 flex学习教程

    Flex是Adobe公司推出的一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和Flex框架,可以创建交互性强、用户体验优秀的Web应用。本教程是作者精心编写的Flex学习资料,适合初学者入门,通过...

    flex flex和 java交互

    Flex是Adobe公司开发的一种开放源代码的富互联网应用程序(RIA)框架,主要用于构建具有动态图形、交互性丰富的Web应用。Flex应用程序通常使用ActionScript编程语言,并基于Flash Player或Adobe AIR运行时环境。Java...

    flex全书籍 flex全书籍

    Flex全书籍涵盖了Adobe Flex这一开发框架的广泛知识,它是一个用于构建富互联网应用程序(RIA)的开源SDK。...无论是初学者还是有经验的开发者,这些书籍都提供了深入浅出的指导,帮助你充分利用Flex的优势。

    Flex资料大全(Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等)

    本资料大全包含了多个重要的Flex学习资源,如Flex白皮书、Flex Cookbook以及Flex编程指南,这些都是深入理解Flex开发不可或缺的文献。 1. **Flex白皮书**: Flex白皮书是Adobe官方发布的技术文档,通常包含Flex...

    flex实战项目,flex开发

    Flex是Adobe公司推出的一种用于构建富互联网应用(RIA, Rich Internet Applications)的开源框架,它主要基于ActionScript编程语言和MXML标记语言。这个“Flex实战项目”可能是一个使用Flex技术构建的实际应用示例,...

Global site tag (gtag.js) - Google Analytics