Вопрос

В 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 и блоги различных членов комитета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top