Frage

Warum gibt GetDefinitionByName () ein Objekt zurück, wenn die Dokumente sagen:

Gibt einen Verweis auf das Klassenobjekt der Klasse zurück, die unter dem Namen Parameter des Namens angegeben ist.

Basierend darauf würde ich zu dem Schluss kommen, dass das zurückgegebene Objekt anstelle von Objekt eine Klasse sein sollte. Kann mich jemand aufklären, warum das nicht der Fall ist?

War es hilfreich?

Lösung

GetDefinitionByName kann auch eine Funktion zurückgeben, z. Dies funktioniert jedoch nur auf den Funktionen auf Namespace-Ebene, nicht auf statischen Klassenmethoden.

Andere Tipps

Trotz der Methodensignatur kehrt GetDefinitionByName zurück Klasse. Ich denke, die irreführende Signatur ist auf die Methode zurückzuführen, die vor dem Klassenobjekt vorhanden ist (wenn es früher eine anonyme/erweiterte Objektinstanz zurückgab).

Vielleicht war Adobe der Ansicht, dass diese Funktion in einer zukünftigen Version von Flash Player unterschiedliche Werte zurückgeben könnte. Zum Beispiel hat sich ECMascript, der Standard, auf dem ActionScript basiert, historisch verwendet Function Objekte mit Prototypen als Grundlage für klassenähnliche Objekte. Bei den Diskussionen über die neuesten Versionen des ECMAScript-Standards wurden im Laufe der Laufzeit funktionsbasierte Klassen im Voraus "gefroren" Class Objekte. Was wäre, wenn Sie auch einen Definitionsnamen für sie angeben könnten? Sind sie tatsächlich vom Typ Class Zu diesem Zeitpunkt oder sind sie noch oder Typ Function? Wahrscheinlich der spätere, meiner Meinung nach. Sowohl "Klasse" als auch "Funktion" Referenzen können verallgemeinert werden als Object, Daher macht dieser Rückkehrtyp in diesem Zusammenhang Sinn.

HINWEIS: Diese Erklärung ist rein spekuliert, basierend auf dem, was ich in der gelesen habe ECMascript -Spezifikation Wiki und die Blogs verschiedener Ausschussmitglieder.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top