11. Класс Dictionary

Класс Dictionary (flash.utils.Dictionary) — новое дополнение в ActionScript. Он представляет собой то же самое, что и базовые объекты Object, за исключением одной особенности: в объектах Dictionary в качестве имен свойств (ключей) могут быть использованы не только строки, но и любые другие значения.

Базовые объекты ActionScript используют строковые ключи (имена) для определения свойств. Если для ключа используется не строковое значение, оно интерпретируется как его строковое представление. Пример:

This content requires Adobe Flash Player.


Если вы попытаетесь использовать несколько разных объектов в качестве ключей в базовом объекте, что вы получите, так это строковое представление каждого из них. Это значит, что, хотя вы и используете для ключей различные объекты, в контейнере это будет один и тот же ключ, ссылающийся на единственное значение.

This content requires Adobe Flash Player.


Класс Dictionary подобного ограничения не имеет. В качестве ключа вы можете использовать любое значение, которое будет полностью представлять этот ключ, в отличие от строкового представления. Таким образом, если в примере выше использовать экземпляр Dictionary, вы получите два различных ключа, по одному для каждого объекта.

This content requires Adobe Flash Player.


И несмотря на то, что вы все же получили [object Object] при трассировке, это просто результат строкового преобразования в команде trace; это уникальный объектный ключ в экземляре Dictionary.

Обратите внимание, что prop здесь определена как *. Это важно, т.к. ключи в объекте dict могут быть любого типа. Если вы используете String как тип prop, объекты a и b при их выборке в цикле будут приводиться к строкам, помещая в prop «[object Object]» вместо действительных ссылок на a и b, которыми они должны быть для корректного доступа к значениям 1 и 2 из dict. Для базовых объектов, независимо от типа, используемого для prop, вы всегда будете получать String.


Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>