AS3深拷贝的一个测试总结


package
{

import flash.display.Sprite;
import flash.net.registerClassAlias;
import flash.utils.ByteArray;
import flash.utils.Dictionary;


public class TestByteArrayCopy extends Sprite
{
public function TestByteArrayCopy()
{
registerClassAlias("1111111", TestValue);
registerClassAlias("111111111", Dictionary);
var TestValue = new TestValue();
var key:TestValue = new TestValue();
p.bagItems[key] = new TestValue();
p.bagItems["111"] = new TestValue();
var byte:ByteArray = new ByteArray();
byte.writeObject(p);
byte.position =0;
var o:Object = byte.readObject();
var p2:TestValue = TestValue(o);

trace(p2 is TestValue);
trace(p2);
trace(p2.bagItems[key]);
trace(p2.bagItems["111"]);
}
}
}

import flash.utils.Dictionary;

class TestValue
{
public var bagItems:Dictionary = new Dictionary();
}


在这段代码是我们AS3中 常用的深拷贝

我做了这么一个小测试,得出几个结论:

1:
发现如果 我们不进行registerClassAlias("1111111", TestValue);
这拷贝出来的类对象 无法转换类型

2:
如果我们的对象中有一个Dictionary, 并且这个Dictionary的KEY 为一个对象,
那么我进行深复制后, 这个对象KEY 将一并被复制, 这样我们将无法在从这个Dictionary中通过原来的对象KEY获得 我们想要的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值