Por que o objeto é retornado de getDefinitionByName ()?
-
03-07-2019 - |
Pergunta
No ActionScript 3, por que getDefinitionByName () retorna um objeto quando os documentos dizem:
Retorna uma referência ao objeto de classe da classe especificada pelo parâmetro de nome.
Com base nisso, eu concluiria que o objeto retornado deve ser classe em vez de objeto. Alguém pode me esclarecer por que não é esse o caso?
Solução
getDefinitionByName também pode retornar uma função, como getDefinitionByName ('flash.utils.getdefinitionByName'). Isso só funciona em funções no nível de namespace, e não nos métodos de classe estática.
Outras dicas
Apesar da assinatura do método, GetDefinitionName retorna Classe. Eu acho que a assinatura enganosa se deve ao método existente antes do objeto de classe (quando costumava retornar uma instância de objeto anônimo/estendido).
Talvez a Adobe tenha considerado que essa função poderia retornar valores diferentes em uma versão futura do Flash Player. Por exemplo, o ecmascript, o padrão em que o ActionScript se baseia, historicamente usado Function
Objetos com protótipos como base para objetos semelhantes a classe. Durante as discussões sobre as versões mais recentes do padrão ECMAScript, houve sugestões para "congelando" classes baseadas em funções em tempo de execução para transformá-las em algo como tempo de compilação Class
objetos. E se você também pudesse especificar um nome de definição para eles? Eles são realmente do tipo Class
Neste ponto, ou eles ainda são ou digitam Function
? Provavelmente o posterior, na minha opinião. As referências de 'classe' e 'função' podem ser generalizadas como Object
, para que esse tipo de retorno faça sentido nesse contexto.
Nota: Esta explicação é puramente especulação com base no que eu li no Wiki de especificação ECMAScript e os blogs de vários membros do comitê.