Question

Dans Actionscript 3, pourquoi getDefinitionByName () renvoie-t-il un objet lorsque la documentation dit:

  

Renvoie une référence à l'objet classe de la classe spécifiée par le paramètre name.

Sur cette base, je conclurais que l’objet renvoyé doit être Class au lieu d’Object. Quelqu'un peut-il m'éclairer pourquoi ce n'est pas le cas?

Était-ce utile?

La solution

getDefinitionByName peut également renvoyer une fonction, telle que getDefinitionByName ('flash.utils.getDefinitionByName'). Cela ne fonctionne que sur les fonctions au niveau de l'espace de noms, mais pas sur les méthodes de classe statiques.

Autres conseils

Malgré la signature de la méthode, getDefinitionByName renvoie la Classe . Je pense que la signature trompeuse est due à la méthode existant avant l’objet Class (quand il retournait une instance d’objet anonyme / étendu).

Adobe a peut-être considéré que cette fonction pourrait renvoyer des valeurs différentes dans une future version de Flash Player. Par exemple, ECMAScript, le standard sur lequel ActionScript est basé, a historiquement utilisé des objets Function avec des prototypes comme base d'objets de type classe. Lors des discussions sur les versions les plus récentes du standard ECMAScript, des suggestions ont été avancées pour "congeler" les classes basées sur les fonctions au moment de l’exécution pour les transformer en objets Class au moment de la compilation. Et si vous pouviez aussi spécifier un nom de définition pour eux? Sont-ils réellement de type Class à ce stade ou sont-ils toujours ou de type Function ? Probablement le plus tard, à mon avis. Les références 'Classe' et 'Fonction' peuvent être généralisées en tant que Objet , de sorte que le type de retour a un sens dans ce contexte.

Remarque: cette explication est une pure spéculation basée sur ce que j'ai lu dans le wiki de spécification ECMAScript et les blogs de divers membres du comité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top