基元数据类型: 存放的是实际的值,赋值之后,相当于深拷贝。
复杂数据类型: 存放的是指针(地址),赋值之后,相当于浅拷贝。
先来看下面的代码:
var initialObj:Object=new Object();
initialObj.name="名字";
var afterObj:Object=initialObj;
afterObj.name="改名了";
trace("initialObj的名字:"+initialObj.name);//输出“改名了”
trace("afterObj的名字:"+afterObj.name);//输出“改名了”
如果是新手,可能你会紧张的发现initialObj的名字也变成了"改名了",但并没有更改过他的名字啊
首先要知道的是AS3里总的分为两种数据类型——基元数据类型也叫原始数据类型和复杂数据类型也叫引用数据类型,具体是什么可以到网上查下相关资料。
因为Object是一个复杂数据类型把initialObj赋值给afterOb(就是这行var afterObj:Object=initialObj;)其实是把initialObj和afterOb指向内存中的同一地址,所以改变了 afterObj,initialObj也改变了。
如何复制一个和initialObj一模一样的对象,而更改复制的对象又不影响initialObj呢,就要用到下面的复制方法,统称“深复制”