Почему объект возвращается из getDefinitionByName()?
-
03-07-2019 - |
Вопрос
В Actionscript 3, почему getDefinitionByName() возвращает объект, когда в документах указано:
Возвращает ссылку на объект класса класса, указанного параметром name.
Исходя из этого, я бы сделал вывод, что возвращаемый объект должен быть Class, а не Object.Может ли кто-нибудь просветить меня, почему это не так?
Решение
getDefinitionByName также может возвращать функцию, такую как getDefinitionByName('flash.utils.getDefinitionByName').Однако это работает только с функциями уровня пространства имен, а не со статическими методами класса.
Другие советы
Несмотря на сигнатуру метода, getDefinitionByName возвращает Класс.Я думаю, что вводящая в заблуждение подпись связана с методом, существовавшим до объекта класса (когда он использовался для возврата экземпляра анонимного / расширенного объекта).
Возможно, Adobe посчитала, что эта функция может возвращать другие значения в будущей версии Flash Player.Например, ECMAScript, стандарт, на котором основан ActionScript, исторически использовал Function
объекты с прототипами в качестве основы для классоподобных объектов.Во время обсуждения новейших версий стандарта ECMAScript предлагалось "заморозить" классы на основе функций во время выполнения, чтобы превратить их во что-то вроде времени компиляции Class
Объекты.Что, если бы вы могли также указать для них имя определения?Действительно ли они одного типа Class
на данный момент, или они неподвижны, или печатают Function
?На мой взгляд, скорее всего, более позднее.Ссылки как на "Класс", так и на "Функцию" могут быть обобщены следующим образом Object
, так что возвращаемый тип имеет смысл в этом контексте.
Примечание:Это объяснение является чисто спекуляцией, основанной на том, что я прочитал в Спецификация ECMAScript wiki и блоги различных членов комитета.