![]() |
Стандартные классы
В одном из топиков велся разговор о работе с массивами, и я задался нижеследующим вопросом: Возможно ли как-нибудь изменить поведение стандартных классов (я так же не знаю, какой термин подходит для описания группы классов, которые Array, Number, BitmapData, то есть тех, которые присутствуют во флеше изначально), при этом не наследуясь от них и не оверрайдя соответствующие методы? Например, сделать чтоб Array в своем методе toString() возвращал не Код:
1,2,3,4,5Код:
[1,2,3,4,5]Вообще, где хранятся эти классы? в playerglobal.swc? Просвятите меня, пожалуйста. |
Нельзя. Обязательно надо наследоваться и переназначать методы. Причем наследоваться можно только от тех классов, которые не являются финализированными. По-моему от Number нельзя унаследовать свой класс (хотя может я и не прав, точно не помню)
Цитата:
|
Великая печаль
|
Из-за toString() городить такой огород?:)
По моему проще сделать функцию (глобальную, с пустым пакетом, тогда даже импортировать не придется), которая бы перебирала массив, с учетом вложенности, формировала свою строку и скармивала ее трейсу. Скажем traceArray (). |
toString() у большинства стандарных классов прототипный, так что можно так:
Код AS3:
|
Переопределение стандартных функций может привести к проблемам в другом месте, где ожидается стандартное поведение функции.
|
Цитата:
|
Кстати, с Array.toString() был связан баг, когда при вызове toString() у вложенных массивов можно было натолкнуться на бесконечный цикл (если массив сам в себя вложен), и в таких ситуациях, естесственно, получалось переполнение стека. Так что будте бдительны, если будете сами реализовывать.
|
| Часовой пояс GMT +4, время: 09:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.