Вы имеете дело со ссылками на данные, а не с копиями данных. Вот как работает ActionScript-3 (и многие другие языки).
Когда вы создаете переменную my_source
, вы создаете ссылку на model.something.source
, которая также включает в себя все ссылки на объекты вашей модели. Кроме того, когда вы перебираете объекты my_vo
, вы также получаете ссылку на эти объекты. Это означает, что если вы вносите изменения в объект в этом цикле, вы вносите изменения в объекты в модели.
Как вы это исправите? Внутри вашего цикла вам нужно будет сделать копию вашего объекта. Я не знаю, как выглядит my_vo
, но если у вас есть какие-либо другие объекты в этом дереве объектов, они также будут ссылками, что, вероятно, потребует "глубокого копирования" для достижения того, что вы хотите.
Самый простой способ (но обычно не самый эффективный) для получения "глубокой копии" - это сериализация и десериализация. Один из способов добиться этого:
function deepCopy(source:Object):* {
var serializer:ByteArray = new ByteArray();
serializer.writeObject(source);
serializer.position = 0;
return serializer.readObject();
}
Затем в цикле вы можете сделать копию данных:
for each(var vo:my_vo in my_source) {
var copy:my_vo = deepCopy(vo);
// act on copy instead of vo
}