Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Копирование объекта!!! (http://www.flasher.ru/forum/showthread.php?t=70950)

__i 25.10.2005 13:08

Копирование объекта!!!
 
У меня есть какой-то объект
my_obj1 = {id:33, par1:123, ..., parN:eeee}

его нужно скопировать в другой

если я напишу
my_obj2 = my_obj1
то у меня в my_obj2 будет ссылка на объект my_obj1 (я же правильно рассуждаю),

а мне нужно чтоб в my_obj2 был объект идентичный my_obj1.

я конечно понимаю что можно копировать каждый параметр отдельно, а можно сделать это как нить по проще ?

maelstorm 25.10.2005 13:14

пиши свой метод. по другому никак

iNils 25.10.2005 13:30

Как было:
Код:

obj1 = {a:11};
obj2 = obj1;
trace (obj1.a);
trace (obj2.a);
obj2.a = 22;
trace ("");
trace (obj1.a);
trace (obj2.a);

Метод клонирования:

Код:

// метод клонирования
Object.prototype.clone = function () {
        var c = new Object ();
        for (var n in this) {
                var o = this[n];
                if (typeof o == "object") {
                        c[n] = o.clone ();
                } else {
                        c[n] = o;
                }
        }
        return c;
};
// пример
obj3 = {a:33, b:{c:333}};
obj4 = obj3.clone ();
trace (obj3.a);
trace (obj3.b.c);
trace (obj4.a);
trace (obj4.b.c);

obj3.a = 44;
obj3.b.c = 444;
trace ("");
trace (obj3.a);
trace (obj3.b.c);
trace (obj4.a);
trace (obj4.b.c);


__i 25.10.2005 13:45

сенкс, как я и думал %((

2iNils - спасибо, избавил меня от лишней работы %)))

__i 25.10.2005 13:54

А такой вопрос - куда это лучше положить? всмысле куда этот код лучше положить, у меня есть несколько классов, в которых этот метод будет использоваться.
Я конечно понимаю что можно и на сцену - будет работать, но куда красивше его положить ?

Mokus 25.10.2005 14:33

Цитата:

Сообщение от __i
но куда красивше его положить ?

Пишеш интерфейс ICloneable с методом clone - его будут наследовать все классы, которые клонируются. И пишеш класс чето типа ObjectUtils, в котором в статическом методе cloneObject реализовываеш алгоритм клонирования.

iNils 25.10.2005 14:34

Ты учитывай, что класс MovieClip является наследником класса Object. То есть у MovieClip тоже появляется метод clone(), но вот работать он будет не так из-за строчки if (typeof o == "object").
А класть... оставь в Object.

KidsKilla 25.10.2005 16:39

.....


Часовой пояс GMT +4, время: 06:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.