А хотите еще одну интересную штуку? =) Вот смотрите:

Код AS3:
package {
public class Singleton {
// вот так делается статический конструктор
// он вызывается при первом обращении к классу
{
trace("static constructor, class is: ", Singleton); // все ок, класс есть
}
public static const instance = new Singleton(); // null в трейсе, объект создан
public function Singleton() {
trace(Singleton); // трейсим именно класс, а не экземпляр, получаем null
}
}
}
То есть алгоритм такой: сначала инициализируются статические поля класса, затем уже сам класс (статический конструктор), и только после этого все остальное. Adobe style. То есть статический конструктор (который по идее должен инициализировать сам класс) в итоге может выполниться после того, как создан первый экземпляр этого класса.
И мы получаем вот такую картину: сначала создаем объект несуществующего класса, потом этот класс инициализируем в рантайме, а потом, получается назначаем этот класс нужным объектам. Ну или я не знаю как еще это можно объяснить =)
(с)
Smithy