Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Dynamic Class, унаследованный от Proxy (http://www.flasher.ru/forum/showthread.php?t=127365)

Elandor 12.07.2009 12:38

Dynamic Class, унаследованный от Proxy
 
Здравствуйте!

Есть некоторый динамический класс, унаследованный от Proxy, который используется в качестве саморасширяемого хранилища данных.
Код AS3:

package com.elandor.fgrabber
{
        import flash.utils.Proxy;
        import flash.utils.flash_proxy;
 
        use namespace flash_proxy;
 
        public dynamic class DynamicObject extends Proxy
        {
                protected var children:Array;
                public function DynamicObject()
                {
                        super();
                        children = new Array();
                }
                override flash_proxy function getProperty(name:*):* {
                        if (!children.hasOwnProperty(name)){
                                children[name] = new DynamicObject();
                        }
                        return children[name];
                }
                override flash_proxy function setProperty(name:*, value:*):void {
                        if(!(value is Function))this.children[name] = value;
                }
                override flash_proxy function deleteProperty(name:*):Boolean{
                        return (delete children[name])
                }
                override flash_proxy function hasProperty(name:*):Boolean{return children.hasOwnProperty(name)}
        }
}

Возникла необходимость сохранить структуру (вместе с содержимым) этого динамического объекта. Собственно один из вариантов - при сохранении возвращать привычный Object или XML-дерево, с которыми потом уже можно удобно работать.

Собственно вопрос возникает касательно этого метода:
Код AS3:

override flash_proxy function getProperty(name:*):* {
                        if (!children.hasOwnProperty(name)){
                                children[name] = new DynamicObject();
                        }
                        return children[name];
                }

..а именно насчёт входного параметра name. Пробовал работать с ним как со String (например тот же trace(name) ) - возвращает пустую строку, хотя метод hasOwnProperty с name в качестве строки работает "на Ура".

Что я делаю не так? Как можно получить имя, к которому пытаются обратиться в этом классе?

Updated:
В ветку if (!children.hasOwnProperty(name)) не заходит, значит и hasOwnProperty с name работает не так, как предполагалось.

Главное объект отлично работает и превосходно справляется со своими обязанностями. Не могу понять, что делать с этим параметром.


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

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