Должно быть легко. У меня есть объект. Я хочу изменить его, но прежде чем я хочу сохранить его копию, на которую я могу вернуться. Я попробовал установить copy = original, но когда я изменяю атрибуты оригинала, в копии также отображаются изменения. Я предполагаю, что это происходит потому, что в ActionScript в любое время, когда вы назначаете, он действительно просто хранит ссылку на исходный объект. Итак, каков наилучший способ хранения копии исходного объекта для последующего использования?Actionscript - Переменная Назначение без ссылки?
ответ
var newObj:Object = Object(ObjectUtil.copy(oldObj));
«Копирует указанный объект и возвращает ссылку на копию. Копия сделана с использованием родной метод сериализации. Это означает, что пользовательская сериализация будет соблюдаться в процессе копирования.
Этот метод предназначен для копирования объектов данных, таких как элементы коллекции. Он не предназначен для копирования объекта UIComponent, такого как элемент управления TextInput. Если вы хотите создавать копии определенных объектов UIComponent, вы можете создать подкласс компонента и реализовать clone() или другой метод для выполнения копии. "
http://livedocs.adobe.com/flex/3/langref/mx/utils/ObjectUtil.html#copy()
// duplicate any given Object (not MCs)
Object.prototype.copy = function()
{
ASSetPropFlags(Object.prototype,["copy"],1);
var _t = new this.__proto__.constructor(this) //
for(var i in this){
_t[i] = this[i].copy()
}
return _t
};
Использование
x = ["1","2","3",[4,5],[{a:1,b:2}]]
y = x.copy()
y[0] = 0
y[3][0]="d"
trace(x)
trace(y)
Что вы ищете глубокую копию объекта, а затем проходя по ссылке. Я нашел ответ здесь, который использует новый класс ByteArray в AS3:
http://www.kirupa.com/forum/showthread.php?p=1897368
function clone(source:Object):* {
var copier:ByteArray = new ByteArray();
copier.writeObject(source);
copier.position = 0;
return(copier.readObject());
}
который затем использовать так:
newObjectCopy = clone(originalObject);
Ура!
Если вы зарегистрируете псевдоним класса перед сериализацией, вы можете сохранить объект в нужном классе после десериализации. См. Flash.net.registerClassAlias – preaction
- 1. Назначение ссылки без ссылки
- 2. Назначение копии xmllist или назначение ссылки?
- 3. Переменная клонирования Javascript без ссылки
- 4. ActionScript переменная readonly
- 5. переменная реферирование и назначение
- 6. Назначение JavaScript «Глобальная переменная»
- 7. Переменная Ошибка Назначение
- 8. Переменная Назначение и петли
- 9. Назначение ПК для ссылки
- 10. Указатель ссылки назначение
- 11. C# Назначение ссылки
- 12. Actionscript доступ глобальная/переменная класса
- 13. Невозможно определить назначение дефиса в actionscript
- 14. Переменная Назначение в скрипте Bash
- 15. Назначение $ Scope переменная внутри DBService
- 16. переменная Назначение Freemarker в JavaScript
- 17. Назначение реквизита Javascript без ключа?
- 18. HTML Удалить назначение из ссылки
- 19. Назначение ссылки на определенную функцию
- 20. Назначение ссылки на строку указателю
- 21. Выберите назначение ссылки на папку
- 22. Назначение списка с сохранением ссылки
- 23. Назначение ссылки страницы меню EpiServer?
- 24. Переменная внутри ссылки
- 25. Назначение собственности vs Переменная Назначение: что такое стандарт?
- 26. Назначение клавиши клавиатуры для изображения или ссылки
- 27. Переменная экземпляра получает магическое назначение в java
- 28. Назначение переменных без ссылок?
- 29. Назначение pandas без цикла?
- 30. Actionscript переменная объявлена как * (звезда) типа
Это страшное решение, любой объект просто укусил комплекс не будет скопирован правильно. Кроме того, добавление к прототипу объекта не является хорошей практикой. Я бы даже сказал, что добавление чего-либо к протипу - это плохая практика. Это больше, чем религия, чем функция. –