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?

Foi útil?

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ê.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top