Если у вас есть контроль над всей иерархией классов, я рекомендую реализовать интерфейс clone()
в каждом классе. Это утомительно, но окупится, когда сложность возрастет.
(Простите, если синтаксис немного отключен, это было давно)
// define a "cloneable" interface
public interface ICloneable {
function clone() : Object;
}
Для каждого класса реализовать метод ...
public class MyClass1 implements ICloneable {
...
public function clone() : Object {
var copy:MyClass1 = new MyClass1();
// copy member variables... if it is a user-defined object,
// make sure you call its clone() function as well.
return copy;
}
}
Чтобы создать копию объекта, просто вызовите функцию clone()
.
var copy:MyClass1 = original.clone();
В качестве примечания, как Java, так и .NET, похоже, приняли методы clone
на своих базовых Object
классах. Я не знаю аналогичного метода для класса ActionScript Object
.