1306

Клонирование объекта в Javascript

Объясню ситуацию. Делаю небольшое приложение, с использованием OpenLayers(библиотека для использования карт). Есть страница map.html например, где находится карта, с разными наложенными на неё слоями. На карте показывается разная инфа, ну вобщем примерно как в Google Maps.Нужно сделать функцию для распечатки карты. Так как на странице map.html карта маленького размера, а распечатать нужно большую карту, да и сформировать расположение в распечатке по другому, я подумал что дучше при нажатии на Print выбрасывать popup, в него посылать объект Map со всей инфой в нём, и в попапе уже делать всё как хочется.Проблема вот в чём. Скажем юзер на страние map.html нашёл пицерию, появился флажок на карте, юзер щёлкает на флажок, всплывает пузырёк с инфой. Потом юзер нажимает Print, выпрыгивает попап, который при помощи объекта Map, содержащего слой с картой, слой с флажком и слой с пузырьком, делает больше карту и вообще формирует распечатку красивее. Если юзер закрывает попап, то OpenLayers убивает все объекты, использующиеся в попапе. в том числе и объект Map. А так как в Яваскрипте объект в попапе всего лишь указывает на оригигнальный объект на странице map.html, то и там объект умирает. Юзер закрывает попап, потом передумывает и снова нажимает Print, но объект Map убит, и посылать в попап нечего. В связи с этим возникла мысль что когда я послыаю объект Map в попап, надо посылать клон, чтобы оригинальный объект не страдал. Я нашёл что-то типа такогоfunction clone(myObj){if(typeof(myObj) != 'object') return myObj;if(myObj == null) return myObj;var myNewObj = new Object();for(var i in myObj)myNewObj[i] = clone(myObj[i]);return myNewObj;}Но это видимо работает только для простых объектов, не содержащих в себе кучу других объектов других классов. У кого-то может есть идеи как клонировать объект?
0