ActionScript2是一种面向对象的语言,因此在涉及到对象(Object)和数组(Array)的赋值操作时需要注意,单纯的赋值操作符"="只是将对象或者数组的引用赋值给新的变量,而不是复制整个对象或者数组,下面的代码是从网络上搜索到的,用于复制对象或者数组.
function duplicate(obj:Object):Object {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
var c = obj instanceof Array ? [] : {};
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
c[i] = duplicate(obj[i]);
}
}
return c;
}
但是这个方法也是有缺陷的,它只能复制对象的属性,不能复制对象的方法,所以好的方法是当我们建立新的类的时候,应该在类中写一个静态方法用于复制类的对象,代码示例如下:
Class A {
var attrA: Object;
var attrB: Array;
var attrC: String;
function A() {
//类的初始化
}
static function clone(obj: A) : {
var cObj : A = new A();
cObj.attrA = duplicate(obj.attrA);
cObj.attrB = duplicate(obj.attrB);
cObj.attrC = obj.attrC;
return cObj;
}
}