![]() |
аналог self в классах AS3
Добрый день всем!
у меня возник такой вопрос: есть ли аналог self в классах Action Script 3? поясняю. например, ключевое слово super используется для доступа к родительским методам и свойствам объекта или класса. а ключевое слово self должно использоваться для доступа к сосбтвенным методам и свойствам. я понимаю, что в случаях объекта для этого есть ключевое слово this. но дело в том, что для работы со статичным (static) методами и свойствами это клюевое слово не подходит (в AS3 ругается компилятор). в документации по ООП для AS3 я ничего не нашел по этому вопросу. в частности мне это нужно для реализации примерно такого кода: Код:
public class MyClass {Код:
var ClassReference:Class = getDefinitionByName( this ) as Class;нужно мне это, чтобы в конечном счете получить примерно это: Код:
import MyClass; |
Хм, а что мешает написать просто new MyClass()?
|
1. вызов каждый раз метода new будет порождать новый объект. а мне нужно чтобы в свойствах этого класса была ссылка на его объект. таким образом объект можно создать один раз а пользоваться им много раз в разных местах не задумываясь о том был ли создан его экземпляр до этого или нет. вообще в других языках программирования такая штука прокатывала и было очень удобно.
2. не красиво. хочется в одну строчку (дело привыычки). если бы AS3 умел делать как Perl ( MyClass->new()->someMethod() ) или как javaScript ( new MyClass ().someMethod() ), то я бы может и сделал через new, но AS3 такой синтаксис не позволяет.. да и объект у меня будет использоваться несколько раз |
Вообще this. не пишите - не будет ругаться)
|
@catyoshi
DarkLight имеет виду, что надо написать так: Код AS3:
|
Код AS3:
|
ну я так пока и сделал. правда есть одно неудосбтво, которое меня сейчас врядли коснется. если в будущем будет переименован класс, то надо как миниму не забыть переименовать тип перменной instance, имя конструктора и поправить метод getInstace..
вместо возможной одной правки получаем целый набор правок... всем спасибо за помощь. |
catyoshi, и ещё 20 тысяч мест, в которых Ваш класс используется. это ещё важнее.
|
Для особых, просто редчайших извращенцев: http://etcs.ru/blog/as3/link_to_method_initializer/
|
| Часовой пояс GMT +4, время: 09:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.