Domanda

In Actionscript 3, perché getDefinitionByName () restituisce un oggetto quando i documenti dicono:

  

Restituisce un riferimento all'oggetto classe della classe specificata dal parametro name.

In base a ciò, vorrei concludere che l'oggetto restituito dovrebbe essere Class anziché Object. Qualcuno può illuminarmi perché non è così?

È stato utile?

Soluzione

getDefinitionByName può anche restituire una funzione, come getDefinitionByName ('flash.utils.getDefinitionByName'). Funziona solo con funzioni a livello di spazio dei nomi, non con metodi di classe statici.

Altri suggerimenti

Nonostante la firma del metodo, getDefinitionByName restituisce Class . Penso che la firma fuorviante sia dovuta al metodo esistente prima dell'oggetto Class (quando utilizzato per restituire un'istanza di oggetto anonimo / esteso).

Forse Adobe ha ritenuto che questa funzione potrebbe restituire valori diversi in una versione futura di Flash Player. Ad esempio, ECMAScript, lo standard su cui si basa ActionScript, ha storicamente usato oggetti Function con prototipi come base per oggetti di classe. Durante le discussioni sulle versioni più recenti dello standard ECMAScript, ci sono stati suggerimenti per "congelare". classi basate sulle funzioni in fase di esecuzione per trasformarle in oggetti simili a Class in fase di compilazione. E se potessi anche specificare un nome di definizione per loro? Sono effettivamente del tipo Class a questo punto o sono ancora o digitano Function ? Probabilmente più tardi, secondo me. Entrambi i riferimenti 'Class' e 'Function' possono essere generalizzati come Object , quindi il tipo restituito ha senso in questo contesto.

Nota: questa spiegazione è puramente speculazione basata su ciò che ho letto nella wiki delle specifiche ECMAScript e i blog di vari membri del comitato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top