|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2009
Сообщений: 56
|
Обращение к классу в статическом методе этого класса
Есть код:
package { public class ClassName { trace(ClassName); staticFunction(); public static function staticFunction():void { trace(ClassName); } } } Цитата:
|
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
|
|
|||||
MikroAcse это совсем не то что хотел автор вопроса. Вопрос на самом деле интересный и глубокий, сейчас нет времени посмотреть почему. Действие происходит в статик ините, почему в нём самом объект класса доступен, а в статик методе нет, не очень понятно. Разве что avm2 пропишет методам их класс уже после инициализации. С другой стороны он же знает что за метод стоит вызвать в этот момент, значит отношение класс -> метод уже установлено, а вот обратное похоже устанавливается после инициализации класса. Я не знаю как это точно устроено.
Добавлено через 3 часа 49 минут Нашёл некоторые мысли, вечером из дома напишу.
__________________
:) |
|
|||||
Регистрация: Jun 2009
Сообщений: 56
|
Напоминаю про "Мысли" =)
|
|
|||||
Я вчера начал писать, там целая статья будет. Если крадко, то во время статик инита сслыка на класс в global ещё не прописана. А компилятор по разному получает эту ссылку для обращения к классу и для создания объекта например, поэтому
package { public class ClassName { trace(ClassName); staticFunction(); public static function staticFunction():void { trace(ClassName); trace(new ClassName()); } } } Добавлено через 5 минут в статик ините и в методе компилируется в разный байткод avm2, и обычно они работаю одинаково, но в данном случае нет.
__________________
:) |
Часовой пояс GMT +4, время: 12:47. |
|
« Предыдущая тема | Следующая тема » |
|
|