2009-03-03 24 views
1

In Actionscript 3, warum getDefinitionByName() ein Objekt zurückgeben, wenn die docs sagen:Warum wird das Objekt von getDefinitionByName() zurückgegeben?

einen Verweis Kosten auf das Klassenobjekt der Klasse mit dem Namen Parameter angegeben.

Daraus würde ich schließen, dass das zurückgegebene Objekt Klasse statt Objekt sein sollte. Kann mir jemand erklären, warum das nicht so ist?

Antwort

7

getDefinitionByName kann auch eine Funktion wie getDefinitionByName ('flash.utils.getDefinitionByName') zurückgeben. Dies funktioniert nur auf Funktionen auf Namespace-Ebene, nicht auf statischen Klassenmethoden.

+0

Dies ist die richtige Antwort, jemand sollte diese Frage aktualisieren. –

6

Trotz der Methodensignatur gibt getDefinitionByName Class zurück. Ich denke, die irreführende Signatur ist auf die Methode zurückzuführen, die vor dem Klassenobjekt existierte (als es eine anonyme/erweiterte Objektinstanz zurückgab).

2

Möglicherweise dachte Adobe, dass diese Funktion in einer zukünftigen Version von Flash Player möglicherweise andere Werte zurückgibt. Zum Beispiel hat ECMAScript, der Standard, auf dem ActionScript basiert, in der Vergangenheit Function Objekte mit Prototypen als Grundlage für klassenähnliche Objekte verwendet. Bei den Diskussionen über die neuesten Versionen des ECMAScript-Standards gab es Aufforderungen zum "Einfrieren" funktionsbasierter Klassen zur Laufzeit, um sie zu Objekten der Kompilierungszeit Class zu machen. Was, wenn Sie auch einen Definitionsnamen für sie angeben könnten? Sind sie tatsächlich vom Typ Class an dieser Stelle, oder sind sie noch oder geben Sie Function ein? Wahrscheinlich der spätere, meiner Meinung nach. Sowohl die 'Class'- als auch die' Function'-Referenzen können als Object verallgemeinert werden, so dass der Rückgabetyp in diesem Zusammenhang sinnvoll ist.

Hinweis: Diese Erklärung ist reine Spekulation basierend auf dem, was ich in der ECMAScript specification wiki und die Blogs der verschiedenen Ausschussmitglieder gelesen habe.

Verwandte Themen