ActionScript 3 中变量持有引用,指向要操作的对像。但和JAVA 不一样的是ActionScript 3的变量本身是不能持有值的。AS3中值类型的变量持有的是指向值类型的引用,引用类型的变量指向的是引用类型的引用。不同的是,值类型的数据是一种不变对象 。
?
既然,都是引用,为何表现出的行为会不一样呢?
原来,在AS3中,值类型数据的引用是一种叫做不变对象(immutable object).这种对象一旦被创建就不能被改变。一旦AVM发现一个不变对象的引用要改变这个不变对象的值,AVM(AS虚拟机)就会创建一个新的不变对象来接受新值。
???????????????????????????????????????????? |
????????????????????????????????????????????? |也就是说在不改变时,如果两个有相同值的植类型数据它们的引用对象是同一个,
?????????????????????????????????????????????? |这样,就可以在一些情况下大大节省内存了。
?
EG:
? var a:int = 1;
? a =?a +1;
?
这个过程就有两个变对象创建。最终a 的引用和a最初的引用是两个不同的对象了。
?
不变对象的设计优点 : 1. 提高执行效率。? ps:这个问题上不是很懂!!!
?????????????????????????????? 2.节省内存空间。
?
?
?
?
?
?